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

来源:互联网 发布:中国银行校园淘宝卡 编辑:程序博客网 时间:2024/06/05 15:58

典型错误案例:

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等方法对原来的引用对象进行操作。




原创粉丝点击