2013-02-01 81 views
2

我正在使用ListView,每個列表元素上有幾個按鈕。列表視圖行佈局上的動態更改也會影響其他行

當點擊某一行上的按鈕時,該按鈕應該消失。點擊按鈕就會消失,這沒關係。問題是一些其他列表元素按鈕也不見了。

例如,當我點擊1st元素按鈕時,它也會影響第6,11,16元素中的按鈕。第7個元素按鈕也影響第2,第12,第17個元素。

原因是適配器不會爲數據中的所有元素創建列表元素。它只會創建幾個足以在屏幕上顯示的對象。如圖中所示,當列表中的頂部元素變爲最後一個元素並且其值改變時。所以當我在第一個元素中隱藏按鈕時,第八個元素中的按鈕(數字來自圖片)也被隱藏起來。

enter image description here

我能避免使用創建項目的副本,並創建新項目的每個元素可能是解決辦法,但觀看這麼多行後減慢應用。

我一直在尋找小時,但找不到任何解決方案。我希望有人知道任何解決方案,或者至少爲我推薦一種不同類型的適配器,實現或其他類型。

回答

1

你應該跟蹤顯示或隱藏的每個元素按鈕狀態天氣。在getView()適配器檢查當前元素狀態的方法,然後相應地隱藏或顯示按鈕。當使用這種方法時,確保每個按鈕的狀態不僅僅是應該隱藏的狀態,所以當視圖回收時,視圖獲得新的狀態而不是舊的狀態。

+0

其實我不只是隱藏一個按鈕。我還添加了新的按鈕,並將新的投票菜單添加到該行。所以其他行也有該選項菜單。看來我會處理每一行的狀態並一次又一次地設置他們的視圖。 – eluleci

0

Amal有部分答案。當您的適配器getview調用完全重新初始化重用視圖。

至於你的速度問題。聽起來你想讓你的適配器懶惰地加載它的數據。您加載的數據很慢。必須要給的東西。這個問題的常見解決方案是在後臺線程中加載數據。

+0

我會盡量做到沒有線程。如果它變得非常慢,我會嘗試使用線程。謝謝 – eluleci

相關問題