更新時間:2016年10月31日17時24分 來源:傳智播客Android培訓(xùn)學(xué)院 瀏覽次數(shù):
class MyTextWatcher implements TextWatcher {
public MyTextWatcher(ViewHolder holder) {
mHolder = holder;
}
private ViewHolder mHolder;
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (s != null && !"".equals(s.toString())) {
int position = (Integer) mHolder.value.getTag();
mData.get(position).put("list_item_inputvalue",
s.toString());// 當(dāng)EditText數(shù)據(jù)發(fā)生改變的時候存到data變量中
}
}
}
holder.value.addTextChangedListener(new MyTextWatcher(holder));
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
holder.value.setTag(position);
}
Object value = mData.get(position).get("list_item_name");
if (value != null) {
holder.name.setText((String) value);
}
value = mData.get(position).get("list_item_title");
if (value != null) {
holder.title.setText(value.toString());
}
value = mData.get(position).get("user_key");
if (value != null) {
holder.userkey.setText(value.toString());
} else {
holder.userkey.setText("-1");
}
value = mData.get(position).get("list_item_inputvalue");
if (value != null && !"".equals(value)) {
holder.value.setText(value.toString());
} else {
String key = mData.get(position).get("user_key").toString();
String inputValue = editorValue.get(key);
holder.value.setText(inputValue);
}
holder.value.clearFocus();
if (index != -1 && index == position) {
holder.value.requestFocus();
}
return convertView;
}
public final class ViewHolder {
public TextView name;
public TextView title;
public EditText value;// ListView中的輸入
public TextView userkey;// 用來定義的標(biāo)志性主鍵,可不用關(guān)心
}
}</map<string,></string,></string,></map<string,>
|
使用方法:
private List<map
mAdapter = new ListEditorAdapter(this, mCheckItemList);
m_lvListView.setAdapter(mAdapter);
直接改變mCheckItemList中的數(shù)據(jù),然后調(diào)用mAdapter.notifyDataSetChanged();就可以更新ListView的數(shù)據(jù)
當(dāng)然,直接從mCheckItemList也可以獲得用戶在EditText中輸入的數(shù)據(jù).比較方便
其他:
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中獲得控件,根據(jù)其id
// EditText et = (EditText) layout.getChildAt(1)//或者根據(jù)位置,在這我假設(shè)TextView在前,EditText在后
System.out.println("the text of "+i+"'s EditText:----------->"+et.getText());
}