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的复用机制,获取ListView中特定位置Item的EditText值可能会遇到挑战。本文将详细介绍如何在ListView中正确地获取EditText的值。 首先,理解ListView的工作原理至关重要。ListView通过ViewHolder...
最后,为了获取ListView中所有EditText的值,可以在适配器中添加一个方法,遍历HashMap并返回所有值: ```java public List<String> getAllEditTextValues() { List<String> values = new ArrayList(editorValue....
要正确获取ListView中多个EditText的输入内容,我们需要实现以下步骤: 1. **自定义Adapter**:创建一个继承自BaseAdapter的自定义Adapter,用于填充ListView的数据。在这个Adapter中,我们需要为每个Item创建一个...
本篇文章将详细探讨如何在ListView中嵌套EditText,并动态获取每个EditText中的输入值。 首先,我们创建一个自定义的ListView项布局,该布局包含一个EditText。自定义布局通常放在res/layout目录下,例如`list_item...
总结起来,动态获取ListView中EditText输入值的关键在于创建自定义适配器,为EditText设置TextWatcher监听器,并在`afterTextChanged()`中处理用户输入的数据。适配器需要维护一个与ListView数据源相对应的数据结构...
然而,当在ListView的每个Item中添加EditText时,可能会遇到一个棘手的问题:用户在EditText中输入的数据可能会在滚动ListView时“窜行”,即原本输入到某个Item的数据在滚动后显示在了其他Item上。这个问题主要是...
2. **监听ListView的OnItemSelectedListener**:在ListView的item被选中或取消选择时,可以移除当前EditText的焦点,避免滚动时的焦点问题。 通过以上步骤,我们基本可以解决ListView与EditText结合使用时可能出现...
当在ListView的条目(Item)中集成EditText时,可以实现用户输入交互,例如在列表中进行编辑、评论等操作。以下是对这个功能的详细解释和实现步骤。 1. **ListView的基本使用** - ListView是一个可滚动的视图容器...
在这个“最简单的listview动态添加、删除带edittext的item例子”中,我们主要探讨如何在ListView中使用EditText,并实现动态添加和删除功能。 首先,我们需要理解ListView的工作原理。ListView通过Adapter将数据与...
当用户在EditText中输入文字后滚动ListView,其他被复用的EditText可能会显示之前输入的内容,导致显示混乱。以下是对这个问题的深入分析和解决方案: 1. **问题解析**: - **ListView的工作原理**:ListView通过...
然而,当我们在ListView中嵌入EditText时,可能会遇到一些常见的问题,比如EditText无法获取焦点,以及用户在EditText中输入内容后,随着ListView的滚动,EditText的输入值会出现错位现象。这些问题严重影响了用户...
这里我们将深入探讨如何通过在EditText中输入内容,实现实时更新ListView的数据。 首先,`EditText`是Android中用于用户输入文本的基本组件,它可以接收用户的文本输入。当我们监听`EditText`的`TextWatcher`事件,...
这会让ListView优先获取焦点,然后将其传递给子View,如EditText。这样在ListView滚动时,EditText仍能保持焦点。 2. **使用OnItemSelectedListener**: 实现ListView的`OnItemSelectedListener`接口,当item被...
当用户在`EditText`中输入文字时,我们可以通过监听`TextWatcher`事件来获取用户的输入,并根据输入的内容动态过滤`ListView`的数据。`TextWatcher`提供了三个关键方法:`beforeTextChanged()`, `onTextChanged()`, ...
6. **数据保存与恢复**:如果应用在后台被杀死,需要保存用户在EditText中的输入,重新启动时恢复。 总的来说,"ListViewAndEditTextDemo"项目展示了如何在ListView的每一项中集成EditText,实现列表中数据的编辑...
用户在EditText中输入的文字会实时更新到列表中相应的位置。 在实际应用中,你可能还需要处理更多细节,比如输入验证、行高自适应、文本溢出提示等。同时,由于EditText在ListView中可能会引发焦点冲突,你可能需要...
首先,我们要理解问题的核心所在:在ListView的最后一个或几个Item中包含EditText,当用户第一次点击EditText时,软键盘会正常弹出。但是,当用户第二次点击同一个或相邻的EditText时,由于软键盘遮挡了ListView的...
动态添加和删除ListView中的Item是一项常见的功能,尤其在构建需要用户交互的应用时。本文将深入探讨如何实现这个需求,以及涉及到的关键知识点。 首先,我们需要理解ListView的工作原理。ListView通过Adapter与...