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的值
ListView的item中有EditText,当需要获得EditText中输入的值时,有时候会重复获取,有时候会发生错位的现象。现贴出适配器的代码,完整例子见附件。
猜你喜欢
转载自hu555u.iteye.com/blog/1969678
今日推荐
周排行