2014-05-05 3 views
0

Я пробовал следовать рекомендациям здесь (How to refresh Android listview?), чтобы обновить ListView, но безрезультатно.ListView не обновляет после вызова notifyDataSetChanged, invalidateViews

Соответствующий код приведен ниже. Обратите внимание, что я вызываю runOnUiThread в свой MainActivity, чтобы обновить ListView этого (фрагмента).

protected ArrayAdapter<String> adapter; 
protected View view; 
protected ArrayList<String> theList; 
protected ListView listView; 


public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    view = inflater.inflate(R.layout.fragment_1, container, false); 

    listView = (ListView) view.findViewById(R.id.listview); 

    theList = new ArrayList<String>(); 
    adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, theList); 
    listView.setAdapter(adapter); 
    if(view != null) { return view;} 

    ((ViewGroup) listView.getParent()).removeView(listView); 
    container.addView(listView); 

    return view; 
} 

protected void updateListViewWithPath(String resultFromServerRead) { 
     //TODO: Somehow split the information.. 
    theList.add("yo"); 
    theList.add("hey"); 
    adapter.clear(); 
    adapter.addAll(theList); 
    listView.invalidateViews(); 
    adapter.notifyDataSetChanged(); 
    listView.refreshDrawableState(); 
} 
+0

вы можете прочитать получить больше знаний о ListView из http://www.vogella.com/tutorials/AndroidListView/article.html – kablu

ответ

1

У вас уже есть ссылка на список ArrayList, так что вам не нужно, чтобы добавить его снова в ListView просто добавить строку в arraylist и notifyDataSetChanged;

пример:

protected void updateListViewWithPath(String resultFromServerRead) { 
     //TODO: Somehow split the information.. 
    theList.add("yo"); 
    theList.add("hey"); 
    adapter.notifyDataSetChanged(); 
} 
Смежные вопросы