2016-05-15 35 views
0

因爲它在知識基礎已經知道,ListView如何讓物品不顯示?

listView.getChildAt() 

將返回null對象時,該項目不shown.So我試圖用

listView.getAdapter().getView(i, null, null).findViewById(...) 

這個問題似乎是我在獲取內容這種方式不會動態改變。我有一個帶有提示的TextView,在輸入文本和確認之後,我只能在文本爲空時得到提示。如果物品未顯示,請幫助我找出如何獲取內容。

回答

0

我猜你正在使用EditText,而不是TextView。

你應該注意到的是,當你調用這個:

listView.getAdapter().getView(i, null, null) 

經常返回一個新的觀點,因爲convertView == NULL。所以你得到一個新的EditText而不填寫輸入的文本用戶(文本是空的)。

我不明白你爲什麼要在ListView中獲取一個隱形物品的內容。所以很難提出解決這個問題的辦法。

在正常情況下,您應該在數據列表中保留View的內容(例如EditText中的輸入字符)。使用EditText,您可以使用TextWatcher監視用戶輸入的更改,然後存儲到相應的數據項。你可以很容易地從列表中獲取它。

+0

我的意思是當一個列表項不在屏幕上時,如何獲取裏面的數據。 – MashPlant

+0

是的,現在我明白你的問題了。你知道ListView使用項目的回收機制。這意味着在滾動出屏幕之後的每個項目將被重新使用以呈現滾動到屏幕的其他項目。舊項目的所有數據將被新數據替換。因此,如果您之前未保存EditText,則無法獲取舊內容。讓我在上面的答案嘗試解決方案:使用TextWatcher並將文本保存在列表中。 – Ken