The content of the adapter has changed but ListView did not receive a notification的解决方案
2016-07-28 09:33
423 查看
在Android开发过程中,使用ListView时,发现这个错误偶尔会出现。特别是做压力测试的时候,不停的点击刷新,更容易出现这个错误。在网上找了一下关于这个问题的解决办法,说的是直接备份一份数据源,我根据他们说的,办法是可行的,上代码。
public void setDataList(ArrayList<Map<String, Object>> dataList) { if (dataList != null) { mDatas = (List<Map<String, Object>>) dataList.clone(); notifyDataSetChanged(); } } public void clearDataList() { if (mDatas != null) { mDatas.clear(); } }
if (mNotificationAdapter == null) {mNotificationAdapter = new AdpFragNotificationList(mActivity);mNotiSwipeView.setAdapter(mNotificationAdapter);}mNotificationAdapter.setDataList(mNotiList);在刷新的时候,调用setDataList()方法,这只是一种迂回的方法,后来发现本质的原因,还是因为在刷新适配器的时候,调用接口之前,清空了数据源的内容,然后再填充适配器,导致的数据源与适配器不匹配。上代码。
mPromotionSwipeView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {@Overridepublic void onRefresh() {mPromotionList.clear();getDataList(false, 0);}});只需要将数据源中的清除放到更新适配器前清除即可。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories