The content of the adapter has changed but ListView did not receive a notification

在Android开发过程中,使用了大量的ListView,发现这个错误偶尔会出现。特别是做压力测试的时候,不停的点击刷新,更容易出现这个错误。代码中已经使用了Adapter的notifyDataSetChanged()方法通知UI更新了,但是还是会出现这个错误。究其根本原因,还是线程之间同步的问题。比如,线程1更新了Adapter中的内容,却还没有来得及通知内容已经更新,就又有线程2更新了Adapter中的内容,这个时候如果线程1再通知内容更新,就会出现上述异常了。

在此提出一些解决办法:

对线程进行管理,如果当前Actitivty暂停了,及时停止这些线程。

数据更新后,要及时使用notifyDataSetChanged()方法通知UI,避免出现数据不一致的情况。

数据的更新,最好放在主线程中进行。这样可以使用同步数据更新与通知内容更新部分的代码。

最后补充一条我最终解决问题的方法:

在用到多线程的时候,可以对数据做缓存处理, 比如与ListView绑定的数据存储在ArrayList (dataList), 在线程中先将数据加入到临时ArrayList(tmpList) , 最后在调用notifyDataSetChanged()方法通知UI更新之前, 把临时ArrayList(tmpList)中的数据更新到ArrayList(dataList)中, 然后清空临时ArrayList(tmpList)数据。

转载于:https://www.cnblogs.com/zhujiabin/p/5771988.html

The content of the adapter has changed but ListView did not receive a notification相关推荐

  1. 关于Adapter的The content of the adapter has changed but ListView did not receive a notification.问题分析

    1.问题描述 1 07-28 17:22:02.162: E/AndroidRuntime(16779): java.lang.IllegalStateException: The content o ...

  2. 解决java.lang.IllegalStateException: The content of the adapter has changed but ListView...的问题

    我写了一个Dialog,Dialog中有一个ListView,想要点ListView中的一项后,跳转到另外一个Activity去. 但在使用时,会偶尔报出下面的错误: 02-21 14:54:28.9 ...

  3. the content of the adapter has changed but listview did not

    http://dev.10086.cn/cmdn/wiki/index.php?doc-view-5432.html高手文章,要分享 这是我原来的代码 public class FileDeleteA ...

  4. 《每日一剂》适配器刷新报错adapter.notifyDataSetChanged()解决

    2019独角兽企业重金招聘Python工程师标准>>> 在使用ListView过程中,有时会出现The content of the adapter has changed but ...

  5. 刷新adapte要注意的地方,和adapter使用的流程

    一般情况下,使用adapte的具体步骤如下: 1,new对象 2,添加adapter 3,然后请求数据, 4,设置数据. 5,通知adapter数据发生改变,进行刷新. 如果有再次请求,则是: 1,先 ...

  6. 每日一剂《适配器刷新报错》

    2019独角兽企业重金招聘Python工程师标准>>> java.lang.IllegalStateException: The content of the adapter has ...

  7. android异常(2)

    1.java.lang.IllegalStateException: The content of the adapter has changed but ListView did not recei ...

  8. Android 小知识

    1.判断sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environmen ...

  9. 源码之ListView分析

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/44996879 在Android所有常用的原生控件当中,用法最复杂的应该就是List ...

  10. android listview 数据同步,android中ListView数据刷新时的同步方法

    本文实例讲述了android中ListView数据刷新时的同步方法.分享给大家供大家参考.具体实现方法如下: public class Main extends BaseActivity { priv ...

最新文章

  1. android 相片裁剪空间,科学网—根据需要的空间范围对目标图层进行空间裁剪 - 孙露的博文...
  2. UIView-Maker,实现UIView的clone操作和统一样式模型
  3. Javascript Prototypes之旅(A Plain English Guide to JavaScript Prototypes译文)
  4. 如何得到通过GetOpenFileName选择的多个文件的文件名
  5. pyspark 读取本txt 构建RDD
  6. disaster——我都做了些什么啊!
  7. JAVA实现的支付宝扫描二维码支付
  8. Eratosthenes筛选法
  9. mysql 基础面试_面试必问之mysql基础
  10. Linux内核模块静态加载的顺序
  11. 移动硬盘格式化了的数据找到法子
  12. Pycharm中的红色小闪电含义
  13. 用python解矩阵方程_用Python的Numpy求解线性方程组
  14. 赛灵思 Xilinx UG1506 - Versal ACAP 开发板系统设计方法指南(中文版) (v2021.2)
  15. word一打字就有下划线_word下划线上怎么打字 不破坏下滑线技巧
  16. element table表格表头显示斜杠/斜线
  17. netty的epoll和linux的epoll是如何实现的
  18. c语言double型小数点后几位_double类型的数据在输出的时候,C语言编译器对小数部分可以精确到小数点后面的第几位?...
  19. 入手python时踩过的坑——缩进篇
  20. 【分治法】逆序对的数量(结合归并排序,含详细思想、解法、代码及注释)

热门文章

  1. redis---队列的操作
  2. iphone core animation教程
  3. 奇异的Pinvoke调用
  4. SQL结构化数据查询语言培训讲义
  5. PHP设计模式——门面模式
  6. 【Excel】多条件查找
  7. MQ(队列消息的入门)
  8. oracle的热备份和冷备份
  9. 卡函数or1200基于simple-spi的SD卡驱动
  10. 普通Java类获取Spring的bean