2012-08-01 68 views
1

我重複使用相同的ListView導航數據,同時更新基於用戶點擊行的ListView數據。到目前爲止,我在整個活動中一直使用相同的行View,但在用戶單擊一行後,我想更改爲的所有行的不同行佈局。我可以清除ListView中的所有視圖,以便它們不會通過convertView進行回收嗎?

更具體地說,ListView包含使用layout1的行,並且用戶單擊一行。 ListView的數組適配器隨後獲取一組新的數據,所有行現在都使用layout2

而不是創建點擊或惹setTag醜陋之後一個新的ListView,我只是想清除所有的,它們通過getViewconvertView發送的緩存行的意見。我仍然想要回收layout2的意見。

我可以這樣做,還是我必須「咬住子彈?」

+0

爲什麼不爲listview調用invalidate? – logcat 2012-08-01 14:05:19

+0

@tabbykitten我認爲這隻會刷新ListView,並且可能仍然會回收現有的視圖。但我相信我確實找到了[答案](http://stackoverflow.com/a/11761180/403455)。 – 2012-08-01 14:15:13

+0

更優化的解決方案可能是構建兩個適配器並切換它們,而不是自行切換rowviews。 – edthethird 2012-08-01 15:56:48

回答

1

看起來ListView.invalidateViews()會做到這一點:

public void invalidateViews()

導致要重建,並重新繪製各方面的意見。

+1

它沒有欺騙。請參閱我的答案[這裏](http://stackoverflow.com/questions/12049198/how-to-clear-the-views-which-are-held-in-the-listviews-recyclebin/16261588#16261588)。 – Leeeeeeelo 2013-04-28 09:45:08

相關問題