列表视图java.lang.IllegalStateException甚至称notifyDataSe

2019-07-29 02:06发布

java.lang.IllegalStateException:适配器的内容发生了变化,但ListView控件没有收到通知。 确保您的适配器的内容不是从后台线程修改,但只能从UI线程。

我的列表视图蕴含着巨大data`s

现在用处理器调用娄代码当数据在列表中被改变

  listviewAdapter.notifyDataSetChanged();

但我得到了同样的错误有时,而不是每次我打开它在此先感谢

Answer 1:

问题不在于其中适配器更新 ,它应该是: 时间适配器更新

它看起来喜欢:您的数据绑定到适配器已被改变,并且UI都进行更新,所以这个时候,系统发现改变了数据,但不能调用notifyDataSetChanged

所以,建议当您更改适配器的数据,调用notifyDataSetChanged立即,

要么

不直接改变你的线程适配器的数据,则应该将数据发送到hanlder ,并在handler使用的数据替换或更改适配器的数据和notifyDataSetChanged

所以,无论如何,建议得到数据可以在后台线程中运行,并更新数据, notifyDataSetChanged在UI线程中使用。



Answer 2:

错误是很清楚的。 你有没有打电话给listviewAdapter.notifyDataSetChanged(); 从UI线程的线程不同。



Answer 3:

修改runOnUIThread(适配器的参数),或使用一个处理程序来通知该数据集已更改适配器。



文章来源: list view java.lang.IllegalStateException even after calling notifyDataSetCanged();