可以明確,現在沒有直接方法可以獲得ListView中每一行EditText的值.
解決方案:重寫BaseAdapter,然後自行獲取ListView中每行輸入的EditText值.
大概算法:重寫BaseAdapter.getView函數,用一個數組存儲EditText中的值,根據position即數組下標,在getView中動態更新EditText和動態獲取EditText中的值.因為ListView中的item是復用的,如果不動態清空或動態獲取EditText中值,就會出現數據紊亂,或者沒數據.那麼在生成EditText的時候要監控其值的變化.存儲下來.
代碼:
package com.exmyth.android;
public class ListEditorAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List
使用方法:
private List> mCheckItemList = new ArrayList>();
mAdapter = new ListEditorAdapter(this, mCheckItemList);
m_lvListView.setAdapter(mAdapter);
直接改變mCheckItemList中的數據,然後調用mAdapter.notifyDataSetChanged();就可以更新ListView的數據
當然,直接從mCheckItemList也可以獲得用戶在EditText中輸入的數據.比較方便
其他:
ListView list= (ListView)findViewById(R.id.list);//獲得listview
for (int i = 0; i < list.getChildCount(); i++) {
LinearLayout layout = (LinearLayout)list.getChildAt(i);// 獲得子item的layout
EditText et = (EditText) layout.findViewById(R.id.et);// 從layout中獲得控件,根據其id
// EditText et = (EditText) layout.getChildAt(1)//或者根據位置,在這我假設TextView在前,EditText在後
System.out.println("the text of "+i+"'s EditText:----------->"+et.getText());
}