java.lang.IllegalStateException:适配器的内容已更改,但 ListView 未收到通知。确保适配器的内容不是从后台线程修改的,而是仅从 UI 线程修改的。
我的 ListView 包含大量数据
当列表中的数据发生更改时,我使用处理程序调用以下代码
listviewAdapter.notifyDataSetChanged();
但有时我会遇到相同的错误,但并非每次加载时都会出现相同的错误 提前致谢
最佳答案
问题不是适配器更新的位置,而应该是:适配器更新的时间。
它看起来像:您与适配器的数据绑定(bind)已更改,并且用户界面已更新,因此这一次,系统发现数据已更改,但无法调用notifyDataSetChanged
。
所以,建议当您更改适配器的数据时,立即调用notifyDataSetChanged
,
或
不要在线程中直接更改适配器的数据,您应该将数据发送到handler
,并在handler
中使用该数据来替换或更改适配器的数据和notifyDataSetChanged
。
所以无论如何,建议获取数据可以在后台线程中运行,并更新数据,在ui线程中使用notifyDataSetChanged
。
关于android - 即使在调用notifyDataSetCanged()之后, ListView 也会出现java.lang.IllegalStateException;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10241765/