现在的位置: 首页 > 综合 > 正文

关于adapter change与listView同步的错误。

2017年10月11日 ⁄ 综合 ⁄ 共 651字 ⁄ 字号 评论关闭

ListView在更新时报异常:
ERROR/AndroidRuntime(15260): 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 thread, but only from the UI thread. [in
ListView(2131099657, class android.widget.ListView) with Adapter(class com.pocketdigi.pptheater.ListAdapter)]

网上有很多蛋疼或者治标不治本的解决方法,其实解决方法很简单:

1.如何你使用线程处理的后台数据,那么就在run方法里面用Handler将数据send出来到主线程里面的handleMessage然后再addAll或者赋值;

2.如果用的异步task,那么在onPostExecute里面去add或者赋值就ok了,注意千万不要在后台去修改类变量的方式去修改数据;


此问题困扰我一年了,今天终于解决了,多谢了,兄弟,我发现即使数据处理不放在线程里面,也会报这个错,所以所有的数据处理还是要放在handler里面处理方可解决此问题



在线程里面不要持有数据的引用,而是直接搞局部变量然后send出去,再添加到类变量上面,绝对没有问题的。

抱歉!评论已关闭.