2011-10-31 41 views
0

我有一個問題,在一段時間內調用notifyDataSetChanged()會凍結與列表視圖的交互。notifyDataSetChanged被調用阻止用戶交互(Android開發)

基本上我的應用程序將一堆圖像加載到列表視圖中。在每個被加載後,它會發布到UI線程。 ui線程將圖像添加到listarray中,然後調用notifyDataSetChanged()

當您在列表中選擇圖像時,它會突出顯示。當我每個圖像撥打notifyDataSetChanged()時,列表上的三個按鍵中的每一個都可能實際選擇。如果我節流下來notifyDataSetChanged(),我會得到更好的敲擊速度並讓它選擇該項目。

任何人都有提示嗎?

看起來6個可見(不變)的拇指很快被拋出並重新交換,但UI沒有顯示它們被刪除的跡象。在此期間,竊聽是無效的數據集。

回答

1

不要在UI線程中調用notifyDataSetChange()。它肯定會阻止用戶交互,如果它正在進行數據調用並更新ListView。所以在後臺線程中做的AsyncTask做的不是在UI線程中做的,所以當用戶滾動時它會更新列表視圖

+0

我使用的代碼與此類似。我很確定它崩潰了,當我將notifyDataSetChange和圖像設置到工作人員,也許我只需要嘗試只移動notifyDataSetChange。我的代碼與此示例最爲相似:http://mihaifonoage.blogspot.com/2009/11/displaying-images-from-sd-card-in.html – Mike

+0

我通過創建自定義控件來解決此問題,該控件將所有圖像通過表面視圖 - 方式更快,我可以節省內存,沒有不可思議的選擇問題。 – Mike