2011-07-07 42 views
3

我有一個ListView問題,它可以回收屏幕上可見的視圖。 我的ListView中最多可以有4個項目,它們都可以在屏幕上看到。 我更新ListAdapter使用的ArrayList中的對象的屬性後,我調用列表適配器的notifyDataSetChanged()方法。 這會導致ListView回收視圖並自行重畫它。 問題是,它正在以相反的順序進行回收。所以如果我在第一個ListView項目上有一個按鈕,它將在notifyDataSetChanged()之後的第二個列表視圖項目中。 我有getView更改convertView屬性,除了按鈕onTouchListener。
這是非常成問題的,如果我有一個按鈕,與觸摸事件(像PTT按鈕)一起使用。它可見一段時間,然後它變得不可見:-(。 1.爲什麼ListView回收在屏幕上可見的項目是這種正常行爲?爲什麼它以相反的順序? 2.我該怎麼做解決我的問題?在屏幕上可見的ListView回收視圖

+1

你能否從你的適配器添加一些代碼? –

+1

這正是你應該從列表視圖框架期望的行爲,引用**谷歌Android工程師羅曼蓋伊**不保證將調用getView()'多少次,所以你不用擔心,也你需要確保你的'Listview'** **高度/寬度**不應該是'wrap_content'關於list view回收機制如何工作的更多細節請參考http://stackoverflow.com/a/14108676/1939564 –

回答

0

你應該爲getview()方法提供代碼。並添加按鈕將項目可能導致當你不使用的添加按鈕,檢查問題。 而不是增加按鈕,你應該在所有項目按鈕,只是讓在你想要的特定位置可見不可見的按鈕 也可以在getview()方法中檢查「null」是否爲創建convertview,如果它們不爲空,它將不會回收/創建視圖/項目

相關問題