我有一個自定義列表視圖,每個條目包含旋轉ProgressBar和單行textview。我總是隻更新列表中的第一項。問題是每次我調用notifyDataSetChanged時,所有可見的視圖都會被重新創建或作爲convertView被回收。Android ListView notifyDataSetChanged
有2個問題,這種方法:
所有條目重新創建,這就是慢 - 作爲我的第一個條目
的進度動畫只更新TextView的,這不是必需的每次都重新啓動
所以我儘管我會保留對適配器中的第一個視圖的引用並手動更新它。它工作,但它隨機拋出IllegalStateException(「適配器的內容已更改,但ListView沒有收到通知。請確保您的適配器的內容不是從後臺線程修改,但僅從UI線程修改。」)
我該如何解決?有沒有辦法通知ListView只有第一個條目改變了?即使有,ProgressBar動畫仍然會失敗。有沒有其他的方法來手動更新它?
感謝
你能證明確實更新的代碼。從消息看來,您可能正在通過非UI線程更新UI(例如AsyncTask中的doInBackground()) – momo
發佈太複雜,但它在UI線程上。問題在於不調用notifyDataSetChanged,正如我在我的問題中解釋的那樣。 –
我有同樣的問題。我在UIThread中使用了關於列表和適配器的所有方法。但隨機拋出這個異常。你如何解決它? – atasoyh