ListView notifyDataSetChanged不起作用 数据不更新的原因
来源:互联网 发布:卫龙淘宝 编辑:程序博客网 时间:2024/05/14 12:57
在动态刷新ListView时,使用notifyDataSetChanged并没有起到作用。有时会被困扰得很痛苦。
其实,在使用notifyDataSetChanged过程中,还是有细节需要注意的。举个例子:
我的ListView使用的数据源是来自ArrayList。通常我们的做法是创建一个已经有我们想要提供给ListView的数据的ArrayList,例如:
ArrayList<Integer> list = new ArrayList<Interger>;list.add(1);
这里我们的list已经是指向了一个堆内存上了。接着我们想要改变list中的数据,而这个时候,就需要注意了,举个例子:我们在代码中有另外一个ArrayList叫做newlist,它是使用下面代码创建出来的:
ArrayList<Integer> newlist = new ArrayList<Interger>;list.add(2);
这个时候,newlist指向的是一个和list指向不同的堆内存,这个时候,我们直接用list = newlist来把newlist的数据交给list,在这里,实际上只是把list的指向改变了,让它也指向newlist指向的那个内存。那么这个时候我们再调用notifyDataSetChanged这个方法来通知listview更新数据就起不了任何作用了,原因很简单,就是list的指向已经改变,而调用notifyDataSetChanged会去检查原来list指向的数据是否变化,但是这时的list已经不是原来的list了,所以它无法判断,只能不作出响应了。那么,这个问题的解决方法是直接在原来的list上面更改数据,可以使用下面的代码来操作:
list.clear();list.addAll(newlist);adapter.notifyDataSetChanged();
这样,list的指向就不会改变,它还是指向原来那块内存,这样调用notifyDataSetChanged()就可以起作用了。
总结:在这里的重点就是要注意在开始时传给ListView的list指向不能被改变,需要从始至终指向同一个内存,这样调用notifyDataSetChanged后就能够检测到list的数据变化,从而触发ListView的重新绘制了!
- ListView notifyDataSetChanged不起作用 数据不更新的原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- ListView中notifyDataSetChanged()刷新数据不更新原因分析
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- notifyDataSetChanged()刷新数据不更新原因
- (15)关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 不使用notifyDataSetChanged更新ListView
- notifyDataSetChanged()数据不更新的问题
- 如何不调用notifyDataSetChanged()时更新ListView的某一项数据
- android listview notifyDataSetChanged更新数据
- ListView notifyDataSetChanged()不刷新数据
- listview notifydatasetchanged 不起作用
- ListView 有时候 notifyDataSetChanged 不起作用
- php构造方法与java的不同
- mac下mysql的乱码问题
- linux学习(1)-基础
- C语言程序就像脱缰的马,老是一闪而过怎么办,mmp的,只好以毒攻毒了。
- BZOJ 2733 2733: [HNOI2012]永无乡 平衡树启发式合并
- ListView notifyDataSetChanged不起作用 数据不更新的原因
- java 女神管理系统⑥
- Android跳转到通讯录选择联系人
- java基础--学习总结
- 处理中文链接
- git常用操作命令
- POJ1037————A decorative fence(动态规划)
- JAVA从入门到精通(12)-- 错误处理
- 静默安装apk