首先,我浏览了网站,找不到解决我的问题,除了“隐藏ListView”。对我来说这不是一个可行的解决方案!Android ListView/Adaptor - 更新ArrayList时出现IllegalStateException
那么,问题: 我已经创建了自己的“EndlessAdapter”,让我来填充的ArrayList <>更多的数据当用户滚动到列表的底部支持ListView控件。除了当用户在列表更新时选择一个行,或者在列表正在更新时(我认为它可能是任何UI交互)更改方向时,这一切都完美运行。
我已经在try catch中包装了我的mAdapter.notifyDatasetChanged()方法,但我似乎无法捕获此IllegalStateException,因此我不知道它在哪里发生!
有没有一种方法,而适配器正在更新ListView,我可以阻止用户与应用程序交互,直到它完成? EndlessAdapter进程的很长一部分是下载新数据。更新ListView是一个快速的过程imo。
我真的需要解决这个问题。 Id而不是张贴源代码,但如果需要的话,我可以尝试和张贴生命体征?否则,我会非常感激,如果有经验的人可以通过电子邮件或即时通讯聊天?
这里是堆栈跟踪:
04-05 21:11:35.363: ERROR/AndroidRuntime(25707): 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(16908298, class android.widget.ListView) with Adapter(class com.mimminito.heatdroid.view.DealsView$DealAdapter)
下面是我的代码的样本的链接:() http://pastebin.com/wfmWSGwQ
创建在OnCreate适配器。一旦XML被分析后,我将Adapter分配给ListView。在同一个方法中,我调用updateList()方法。这得到已经下载数据,然后通知其数据已经被改变了mAdapter(UI线程上的所有运行)
感谢您的时间
亚当
只是一个想法 - 你如何访问'onListItemClicked()'中的数据?我想你应该通过调用'getListView()。getItemAtPosition(position)'来访问相关的项目,以避免并发问题。另外,如果您通过电子邮件或即时消息发现解决方案,您是否会将其发布到此处,以便其他人可以参考它? – 2011-04-05 20:56:38
另外,如果不是代码,发布堆栈跟踪可能会有所帮助。 – 2011-04-05 20:58:02