我有一个自定义列表视图,每个条目包含旋转ProgressBar和单行textview。我总是只更新列表中的第一项。问题是每次我调用notifyDataSetChanged时,所有可见的视图都会被重新创建或作为convertView被回收。Android ListView notifyDataSetChanged
有2个问题,这种方法:
所有条目重新创建,这就是慢 - 作为我的第一个条目
的进度动画只更新TextView的,这不是必需的每次都重新启动
所以我尽管我会保留对适配器中的第一个视图的引用并手动更新它。它工作,但它随机抛出IllegalStateException(“适配器的内容已更改,但ListView没有收到通知。请确保您的适配器的内容不是从后台线程修改,但仅从UI线程修改。”)
我该如何解决?有没有办法通知ListView只有第一个条目改变了?即使有,ProgressBar动画仍然会失败。有没有其他的方法来手动更新它?
感谢
你能证明确实更新的代码。从消息看来,您可能正在通过非UI线程更新UI(例如AsyncTask中的doInBackground()) – momo
发布太复杂,但它在UI线程上。问题在于不调用notifyDataSetChanged,正如我在我的问题中解释的那样。 –
我有同样的问题。我在UIThread中使用了关于列表和适配器的所有方法。但随机抛出这个异常。你如何解决它? – atasoyh