更新时间:2016年10月31日17时24分 来源:传智播客Android培训学院 浏览次数:
|  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());// 当EditText数据发生改变的时候存到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;// 用来定义的标志性主键,可不用关心     } }</map<string,></string,></string,></map<string,> | 
使用方法:
private List<map
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());
}
