Updating the list view when the adapter data changes

android

Solution

substitute:

mMyListView.invalidate();

for:

((BaseAdapter) mMyListView.getAdapter()).notifyDataSetChanged(); 

If that doesnt work, refer to this thread: Android List view refresh

Problem

When the data associated with array adapter is changed, invalidating the listview is sufficient to show the updated values? Following piece of code is not working, did i misunderstood something here.? ``` public class ZeroItemListActivity extends Activity { private ArrayList<String> listItems=new ArrayList<String>(); private ListView mMyListView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mMyListView=(ListView) findViewById(R.id.MyListView); mMyListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,listItems)); } public void addItem(View v){ listItems.add("list Item"); mMyListView.invalidate(); } } ``` Layout used : ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/MyListView"></ListView> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/AddItemsButton" android:text="Add Items" android:onClick="addItem"></Button> </LinearLayout> ```

Original source

Related problems