ListView的item中有EditText,当需要获得EditText中输入的值时,有时候会重复获取,有时候会发生错位的现象。现贴出适配器的代码,完整例子见附件。
public class MyAdapter extends BaseAdapter {
private List<Entity> list;
private LayoutInflater inflater;
public MyAdapter(Context context, List<Entity> list) {
this.list = list;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.item, null);
viewHolder = new ViewHolder();
viewHolder.textView = (TextView) convertView.findViewById(R.id.txt_item);
viewHolder.editText = (EditText) convertView.findViewById(R.id.edit_item);
viewHolder.editText.setTag(position);
viewHolder.editText.addTextChangedListener(new MyTextChangeListener(viewHolder));
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
viewHolder.editText.setTag(position);
}
Entity entity = list.get(position);
viewHolder.editText.setText(entity.getContent());
viewHolder.textView.setText(entity.getId());
return convertView;
}
public class ViewHolder {
TextView textView;
EditText editText;
}
private class MyTextChangeListener implements TextWatcher {
private ViewHolder holder;
public MyTextChangeListener(ViewHolder holder) {
this.holder = holder;
}
@Override
public void afterTextChanged(Editable s) {
int position = (Integer) holder.editText.getTag();
Entity entity = list.get(position);
entity.setContent(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
}
public List<Entity> getData() {
return list;
}
}
分享到:
相关推荐
ListView获取item中EditText值
Android实战运用中可能有很多地方会用到ListView,更为复杂的是每个item嵌入了多个Edittext,给我们造成很大的困扰,本资源就是为大家提供一个简单的参考,希望对大家有所帮助
在ListView中item中的editext中输入数据,可以动态的取得
安卓源码包android web应用Dialog对话框OCR图像识别listview相关EditText输入框Launcher 桌面45个合集: [四次元]Android Launcher 桌面分页滑动代码.rar [四次元]Android Launcher 源码修改可编译.rar [四次元]...
这是公司给我的UI培训项目 包含 常用UI组件的使用 在 EditText下弹出历史记录 活用ListView的Adapter 获取 ListView、GridView的Item内部的组件的内容 还有一些 其他的使用 总之 对AndroidUI开发 有很大的帮助
//获取当前时间 String times = formatter.format(curDate); // 定义ContentValues ContentValues cValues = new ContentValues(); cValues.put(KEY_BODY, mBody); cValues.put(KEY_TITLE, mTitle...
ListView中的Item自定义点击后的背景色的方法。 drawable各个分辨率 fragment 的几种创建方式 fragment第一次使用遇到的问题 activity变身对话框 onMeasure 中的AT_MOST EXACTLY UNSPECIFIED MotionEvent的触发记录 ...
《Android应用开发I》实验指导书 计算机科学及技术系 目 录 实验一 :第一个应用程序 3 实验二 :基本控件 1 实验三 :高级控件 4 实验四 :菜单和对话框 7 实验五 :数据存储 8 实验六 :后台处理及获取网络数据 9 ...
4.6.5、ListView 被选中item的背景颜色 82 4.6.6、ListView自定义背景颜色 83 4.6.7、List长按与短按消息映射 84 4.6.8、点击ListView改变背景色 87 4.6.9、自动滚动ListView 88 4.6.10、BaseExpandableListAdapter...
4.6.5、ListView 被选中item的背景颜色 82 4.6.6、ListView自定义背景颜色 83 4.6.7、List长按与短按消息映射 84 4.6.8、点击ListView改变背景色 87 4.6.9、自动滚动ListView 88 4.6.10、BaseExpandableListAdapter...
* 值为1表示创建打开目录类型的对话框,2为创建保存文件到目录类型的对话框 * @param fileType * 要过滤的文件类型,null表示只选择目录 * @param resultPath * 点OK按钮返回的结果,目录或者目录+文件名 */ ...