android - 即使在调用notifyDataSetCanged()之后, ListView 也会出现java.lang.IllegalStateException;

标签 android listview android-listview illegalstateexception

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/

相关文章:

android - "is"按钮未显示在 Android 应用程序的确认框中?

java - SQLiteDatabase android 中的特殊字符

安卓 : simple_list_item_activated_1 : Listview change default blue color

listview - 将 <ul> 更改为 <ul 数据角色 ="listview">

android - 如何在 ListView 中显示游标数据之前对其进行操作(使用加载程序)?

android - 使用 SimpleCursorAdapter 和 ViewBinder 在 ListView 项中设置图像

java - 在主机运行时将不同的摄像头连接到主机

java - 如何在 fragment 中正确实现谷歌地图?

android - ArrayAdapter 有时不执行 getView() 方法(取决于设备)

android - 像 youtube 应用程序一样突出显示 ListView 项目?