1.导致Listview的NotifyDataSetChanged方法无效的原因

典型错误案例:


aryString1 = new String[]{"I am String1"};
adp = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,aryString1);
mListView.setAdapter(adp);
aryString1 = new String[]{"I am String2"};
adp.notifyDataSetChanged();

原因分析:
明确赋值符号在引用类型之间的意义,adp监听的是new String[]{"I am String1"}的变化,执行aryString1 = new String[]{"I am String2"};这行代码,只是说修改了aryString1的引用,使他指向了new String[]{"I am String2"}这个对象,而此时new String[]{"I am String1"}并没有发生变化,所以即调用
adp.notifyDataSetChanged(),listview也当然不会发生什么变化。

解决方案:
明确了原因之后,只要修改adp监听的对象的数据内容就能够成功刷新listview了,对于Arraylist集合而言,常用add、addAll、remove等方法对原来的引用对象进行操作。




你可能感兴趣的:(1.导致Listview的NotifyDataSetChanged方法无效的原因)