我有一個GridView,顯示幾十行自定義佈局,每個自定義佈局包含一個EditText和一個TextView對象。Android從GridView的EditText獲取文本
如果我理解正確,我應該擴展BaseAdapter類來完成。如果是這樣,我怎樣才能訪問特定的EditText對象?
此外,如果某個EditText視圖不再顯示,回收視圖是否會導致用戶輸入的文本丟失?
有沒有更簡單的方法來完成我在這裏描述的內容(可能是GridView以外的東西)?
我有一個GridView,顯示幾十行自定義佈局,每個自定義佈局包含一個EditText和一個TextView對象。Android從GridView的EditText獲取文本
如果我理解正確,我應該擴展BaseAdapter類來完成。如果是這樣,我怎樣才能訪問特定的EditText對象?
此外,如果某個EditText視圖不再顯示,回收視圖是否會導致用戶輸入的文本丟失?
有沒有更簡單的方法來完成我在這裏描述的內容(可能是GridView以外的東西)?
當您擴展BaseAdapter
您必須覆蓋的方法之一是getView(...)
。在此方法中,您創建需要顯示的視圖。如果要保留在EditText
中輸入的文本,則需要執行的操作是在EditText上設置一個TextWatcher
,傳入EditText(參數getView(...)
中的參數)位置,並且每當更改文本時,都將文本保存在一組排序。然後,只要該位置通過getView(...)
方法返回,就從數組中抓取文本並填充EditText
。
聽起來可行,但很複雜。僅僅爲此使用TableLayout(行數不應超過100)會簡單得多嗎? – Allen
如果您的所有單元格都具有相同的含義,即每個單元格都具有EditText和TextView,則使用TableLayout並不會更簡單。使用適配器的力量在於屏幕外的位置不存儲在內存中,給您一個很小的內存佔用空間。無論何時滾動,重新使用屏幕上的視圖使視圖進入屏幕。 –
我看到,當我使用TextWatcher時,有三種方法被強制覆蓋。爲了用更新的文本更新我的字符串數組,我必須知道新文本屬於哪個EditText對象(我使用它來獲取字符串數組中的正確索引)。可編輯對象是否「知道」它是哪一個? – Allen
你應該使用一個底層的數據結構(比如List),它應該爲Grid的每個元素保存數據。
TextView和EditText應該從此列表中填充。
你有沒有找到解決方案? –