也许很多开发的朋友,尤其是Android初学者,在动态刷新ListView时,使用notifyDataSetChanged并没有起到作用。有时会被困扰得很痛苦。
其实,在使用notifyDataSetChanged过程中,还是有细节需要注意的。举个例子:
我的ListView使用的数据源是来自ArrayList。通常我们的做法是创建一个已经有我们想要提供给ListView的数据的ArrayList,例如:
1 ArrayList<Integer> list = new ArrayList<Interger>;
2 list.add(1);
这里我们的list已经是指向了一个堆内存上了。接着我们想要改变list中的数据,而这个时候,就需要注意了,举个例子:我们在代码中有另外一个ArrayList叫做newlist,它是使用下面代码创建出来的:
1 ArrayList<Integer> newlist = new ArrayList<Interger>;
2 list.add(2);
这个时候,newlist指向的是一个和list指向不同的堆内存,这个时候,我们直接用list = newlist来把newlist的数据交给list,在这里,实际上只是把list的指向改变了,让它也指向newlist指向的那个内存。那么这个时候我们再调用notifyDataSetChanged这个方法来通知listview更新数据就起不了任何作用了,原因很简单,就是list的指向已经改变,而调用notifyDataSetChanged会去检查原来list指向的数据是否变化,但是这时的list已经不是原来的list了,所以它无法判断,只能不作出响应了。那么,这个问题的解决方法是直接在原来的list上面更改数据,可以使用下面的代码来操作:
1 list.clear();
2 list.addAll(newlist);
3 adapter.notifyDataSetChanged();
这样,list的指向就不会改变,它还是指向原来那块内存,这样调用notifyDataSetChanged()就可以起作用了。
总结:在这里的重点就是要注意在开始时传给ListView的list指向不能被改变,需要从始至终指向同一个内存,这样调用notifyDataSetChanged后就能够检测到list的数据变化,从而触发ListView的重新绘制了!另外,我在开发完APP都会用一些APP在线自动化测试工具进行测试:
http://www.ineice.com
分享到:
相关推荐
Android_ListView动态刷新
ListView下拉刷新 ListView下拉刷新ListView下拉刷新ListView下拉刷新
ListView动态加载刷新
android 实现listview动态下拉刷新,动态加载数据 可以避免一次数据加载过多
主题:ListView分页(带图片)显示用法案例,主题:ListView分页(带图片)显示用法案例
通过对ListView的运用,实现仿QQ的消息列表。涉及内容:ListView,Adapter
android ListView item下载 ListView 进度条下载 ListView多个下载 android:ListView的局部刷新 Android中自定义Adapter实现ListView动态刷新进度条 android listview局部刷新和模拟应用下载
Android源码:ListView组件应用演示代码,layout的xml文件名需要全部小写。 ActivityList1: 1.初步介绍ListView这个组件。 2.初步介绍ArrayAdapter。 # simple_list_item_single_choice # ...
Android中ListView用NotifyDataSetChanged实现添加数据时动态刷新
android:listview联动
为了解决listview局部刷新调用getView多次
主题:ListView 分页显示
HorizontalListView的应用:Listview中完美嵌套HorizontalListView
本节课程内容:ListView的介绍 1.1 ListView控件 1.2 常用数据适配器(Adapter) 数据展示控件 ListView控件 ListView控件 The ListView control ……> <ListView android:id="@+id/lv" android:layout_width=...
第四章:ListView使用技巧.md
Android 抢购倒计时:ListView 的每个itme中添加计时器
ListView 动态加载,顺便提供解决listview与scrollview不兼容的方法
解决Scrollview嵌套listview下拉刷新的一些问题
Android学习笔记(十八):ListView和RatingBar
ListView上拉加载下拉刷新升级版:滑动tab结合listView数据刷新