java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background

解决listview的数据源更新和adapter的数据更新问题;

一般listview的数据源和adapter的数据源都是一起更新的,但是要是用异步更新listview的数据,然后在主线程调用adapter.notifydatasetchange的话就会报这个错误.

解决的办法就是要把notifydatasetchange和listview的数据源更新放在一个线程更新.

但是这样的话,listview的数据源就不能异步了,所以就在adapter上做文章.

首先,adapter的构造方法不能把listview的数据源放进去,而是用set数据源的方式


然后再adapter的getcount上面不再返回mdata.size;而是return mDatas == null ? 0 : mDatas.size();

在创建adapter的时候就要这样:

最后使用方法:

这样不管是触摸item还是快速上下拉listview都不会再报这可恶的错了;更不会cresh了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容