2010-11-01 23 views
0

我正在開發自定義ListView以便在商店前購買商品。您可以滾動列表並閱讀產品說明以及查看產品圖像。對於用戶已擁有的商品,我已實用地將商品名稱(列表中的商品)的顏色更改爲不同的顏色,以便用戶可以輕鬆識別「我已經擁有該商品」。Android ListView行爲不正常

當我滾動到列表底部,然後回到頂部時,出現錯誤信息。 UI建好後,標題全部顏色正確,但在完成滾動並返回頂部後,當前擁有的產品仍爲紅色,並且列表中的項目也變爲「擁有」狀態。每次向下滾動列表並備份時,這種情況都會繼續發生,直到整個列表變成擁有狀態。

我不編輯我的產品列表,這發生在我的項目中的所有適配器上。每種產品在填充產品列表時都是獨一無二的。

有什麼方法可以堅持一個項目列表,並告訴視圖,一旦它的內置沒有更多的UI變化需要安排?

感謝,

羅伯特

+2

Android的列表適配器在啓動時可能會有點混亂/複雜,但一旦你明白了這種問題很容易避免。我建議你查看Romain Guy grom Google I/O 2010 http://www.youtube.com/watch?v=wDBM6wVEO70的視頻。羅曼在解釋ListView問題方面很棒。 – Juhani 2010-11-01 13:46:50

+0

謝謝。這幫助了很多! – BajaBob 2010-11-01 14:01:06

回答

1

當你建立在適配器列表中的項目,你需要的其他情況的一切。我懷疑你有這樣的事情:

if (item_is_owned) 
    change_color_to_red(); 

你需要一個別的情況:

if (item_is_owned) 
    change_color_to_red(); 
else 
    change_color_to_normal(); 
1

你可以考慮使用不同的視圖類型的適配器創建的視圖。一個是擁有的物品,另一個是沒有的物品。 Adapter方法getViewTypeCount()和getItemViewType()用於執行此操作。您將避免必須執行if-then-else邏輯來自定義getView()中的視圖。讓我知道這個答案是否需要更多的解釋。