2016-05-13 75 views
0

我遇到過這類問題很多,但沒有一個答案解決了我的問題。Android - 自定義ListView中的TextView在滾動時丟失其內容

我正在開發移動購物應用程序模型。我有一個自定義ListViewImageViewEditText(數量),2 Buttons爲增加和減少數量,3 TextView一個爲項目名稱和其他兩個價格,我動態加載一些按鈕的NetWeights的基礎上需求通過Java代碼,我正在使用CustomAdapter(Class)實現它,擴展了BaseAdapter和getView()。

問題1:

當我使用條件if(convertView==null), setTag(holder)getTag(),動態加載的按鈕被得到複製,並且在數量上被加倍。

問題2:

雖然滾動定製ListView我失去的TextView s,而其他TextView(名稱)2我的數據是好的,因爲在TextView我不要改變運行時數據。另外兩個TextView s(價格)我使用ButtonClicks(增加和減少)在運行時更改數據,當時當我滾動兩個TextView時,它會丟失其內容。實際上,我在EditText(顯示數量)上遇到了同樣的問題,我使用TextWatcher通過獲取值並將其傳遞給數組並再次設置它來解決此問題。我對TextView採用了相同的技術(即TextWatcher),但這並沒有幫助。我也嘗試刪除TextWatcher,並使用數組設置文本並添加TextWatcher。仍然我失去了我的內容TextView s

任何建議??????

+0

嘗試使用recyclerview而不是列表視圖 –

+0

發表您的適配器類 –

+0

@shayanpourvatan,其實我的代碼太長,計算器是不是讓我張貼這種長碼:( – Joshua

回答

0

問題1: 使用ViewHolder(setTag(),getTag())時,我們將重新使用視圖。 例如:假設我們有10個listview項目,並且屏幕一次可以顯示3個項目。比方說,我們添加2個按鈕來列出項目1.第一次當我們加載列表視圖,我們會看到兩個按鈕。現在讓我們向下滾動並重新回到列表項1,因爲我們正在重新使用視圖,我們已經有2個按鈕,並且如果我們有使用getTag()添加按鈕的代碼,那麼將會添加2個按鈕。我認爲這可能會導致按鈕重複的問題。爲了添加更多信息,列表項目1,列表項目4,列表項目7和列表項目10都將使用相同的視圖,因爲我們的示例中的屏幕只能顯示3個項目。

問題2: 一個想法是將所有這些文本值存儲在arrayList中。 例如,假設我們在每個列表項中都有一個可以遞增/遞減的textView。在這個textView上設置textWatcher,每當文本改變時,使用'position'作爲索引將它添加到arrrayList。如果getTag()在getView方法內部嘗試使用以前存儲的文本(存儲在arrayList中)設置textView(如果存在)。

+0

對於問題2,我已經厭倦了你的建議。它適用於EditText,但對TextView無效(而且我的另一個疑問是當您的建議適用於EditText,爲什麼它不適用於TextView? – Joshua

+0

對於問題1,我認爲您所說的是正確的。問題1:謝謝:) – Joshua

+0

1:D。但新的問題發生:( – Joshua

相關問題