2011-03-17 81 views
0

我有一個自定義的ListView活動,它爲列表中的所有項目維護一個狀態數組(3個選項,默認=黑色,一次點擊=綠色,第二次點擊=紅色)。列表項目/行的顏色根據用戶選擇而改變,所以我可以使用該項目的顏色作爲以後的數據標記。現在一切工作正常,直到我滾動屏幕上的選定項目,並返回到活動視圖,當他們的自定義顏色消失。狀態數組仍然包含所有正確的信息,自定義顏色就會消失。我在ListView上使用OnItemClickListener來處理單擊項目時的顏色更改,但我猜這不是最好的方法。處理這個問題的最佳方法是什麼?ListView選中的行顏色消失

編輯:爲了清楚起見,我允許選擇具有多種顏色的多行。

在此先感謝。

回答

3

這可能是因爲您有一個適配器爲您創建行視圖。爲了更高效,適配器將重用屏幕上不再顯示的行視圖。這減少了必須保存在內存中的視圖數量。爲了讓顏色在屏幕上滾動時保持不變,您必須找到一些方法來存儲每個項目應該放置的顏色,然後讓適配器在構建視圖並相應地設置顏色時檢查每個項目。

+0

嘗試擴展您的適配器類,重寫'getView'方法並手動設置每行的顏色。 http://developer.android.com/reference/android/widget/Adapter.html#getView%28int,%20android.view.View,%20android.view.ViewGroup%29 – 2011-03-17 14:21:49

+0

這基本上是我一直在嘗試下,每次單擊列表視圖時手動更新狀態數組,然後在適配器的getView()方法中設置適當的背景顏色。我想我希望有一個更優雅的解決方案,但我會看看是否有效。編輯:抱歉Max,沒有看到您的評論。是的,我想這是要走的路。 – Matt 2011-03-17 14:23:07

+0

得到它的工作方式,感謝幫助傢伙。如果有人有更優雅的解決方案,請隨時發佈。 – Matt 2011-03-17 14:55:40