最近项目中用ListView ,ListView的item是EditText,然后设置EditText的值,一拉ListVIew,EditText中的值就改变了,然后自己就上网找了资料,现在将方法总结一下,菜鸟第一次写博客,大牛勿喷
main.xml 里面只有一个ListView
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/listView" android:cacheColorHint="#000000" android:layout_width="fill_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout>
listView 每一个item布局,里面只有一个EditText
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content"> </EditText> </LinearLayout>
java 代码:注释写的很清楚
package com.xiaanming; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ListView; public class ListViewActivity extends Activity { private ListView listView; private Adapter adapter; List<String> dataList = new ArrayList<String>(); //定义一个HashMap,用来存放EditText的值,Key是position HashMap<Integer, String> hashMap = new HashMap<Integer, String>(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //加入数据 dataList = addData(); //实例化ListView 并设置Adapter listView = (ListView)findViewById(R.id.listView); adapter = new Adapter(); listView.setAdapter(adapter); } //往ListView 里面添加数据的方法 private List<String> addData(){ List<String> list = new ArrayList<String>(); list.add("为你写诗"); list.add("我爱你"); list.add("傻瓜"); list.add("这就是爱"); list.add("我们在一起"); list.add("永远不分离"); list.add("想你的夜"); list.add("十年"); list.add("飞机场"); list.add("爱很简单"); list.add("普通朋友"); list.add("我们两"); list.add("富士三下"); list.add("离别"); list.add("们两"); return list; } //自定义Adapter class Adapter extends BaseAdapter{ @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int position) { return dataList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { String str = dataList.get(position); convertView = LayoutInflater.from(getApplication()).inflate(R.layout.listview_item, null); final EditText editText = (EditText)convertView.findViewById(R.id.editText1); editText.setText(str); //为editText设置TextChangedListener,每次改变的值设置到hashMap //我们要拿到里面的值根据position拿值 editText.addTextChangedListener(new TextWatcher() { @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) { //将editText中改变的值设置的HashMap中 hashMap.put(position, s.toString()); } }); //如果hashMap不为空,就设置的editText if(hashMap.get(position) != null){ editText.setText(hashMap.get(position)); } return convertView; } } }
如果你想得到每个editText中的值,根据position就可以拿到啦
相关推荐
在某些应用场景中,我们可能需要从ListView的每一项(item)中获取EditText控件的输入值,例如用户填写表单或者搜索框等。这个过程涉及到对ListView的适配器(Adapter)操作以及对每个列表项的视图(View)的访问。...
因此,直接在点击事件或者监听器中获取EditText的值通常是不可靠的,因为此时的EditText可能已经被复用,显示的是其他Item的数据。 要解决这个问题,我们需要在ListView适配器(通常继承自BaseAdapter)中处理...
然而,当ListView的每个Item中包含多个EditText时,获取用户在这些EditText中输入的内容可能会变得复杂。本资源"Android中ListView多个Edittext获取输入内容.rar"显然是为了帮助开发者解决这个问题。 首先,我们来...
在实际应用中,我们常常需要与ListView中的各个元素进行交互,比如获取EditText控件的输入值,或者根据用户操作动态删除列表项。本文将详细介绍如何在ListView中实现这两个功能。 首先,我们需要了解ListView的工作...
然而,在ListView中嵌套多个EditText时,常常会遇到一个问题,即用户在EditText中输入内容时,ListView滚动时导致显示混乱,原本输入的位置与EditText不匹配,这被称为“EditText焦点错乱”或“ListView复用机制问题...
在标题和描述中提到的问题是关于如何在ListView中改变并获取EditText的值。以下是一种常见的解决方案: 首先,你需要创建一个自定义的BaseAdapter,比如`ListEditorAdapter`。这个适配器会负责填充ListView的每一项...
本篇文章将详细探讨如何在ListView中嵌套EditText,并动态获取每个EditText中的输入值。 首先,我们创建一个自定义的ListView项布局,该布局包含一个EditText。自定义布局通常放在res/layout目录下,例如`list_item...
然而,当在自定义的ListView中添加EditText控件时,会遇到一些特殊的挑战,因为ListView的复用机制可能导致数据丢失或者冲突。本文将深入探讨如何在自定义ListView中正确地使用和管理EditText控件。 首先,我们需要...
- 在ListView中使用EditText需要监听焦点变化,确保在Item滚动时保存当前EditText的值,避免滚动过程中数据丢失。 - 需要处理文本输入监听(TextWatcher),以便在EditText内容改变时更新数据模型。 3. **...
然而,当ListView中的item包含多个EditText时,往往会出现显示混乱的问题。这个问题主要是由于ListView的复用机制导致的,即同一个ListView item在不同位置被重复使用,如果没有正确处理,就可能出现输入框内容错位...
在某些应用场景中,我们可能需要在ListView的每一项(item)中包含一个EditText,让用户输入数据,并实时获取这些输入值。这就涉及到了如何动态地从ListView中的EditText获取用户输入的信息。以下将详细介绍实现这一...
当EditText的文本改变时,将其更新到对应的模型数据中,这样即使视图被复用,也能从数据模型中恢复正确的状态。 在实际应用中,可能还会遇到其他相关问题,如点击事件冲突、键盘弹出时ListView的滚动行为等。对于...
在这个场景中,我们探讨的是如何在ListView的每一项中结合ImageView和EditText,实现点击ImageView时EditText数值的增减。这个功能通常应用于计数器或者评分系统等交互场景。 首先,我们需要创建一个自定义的...
当我们在ListView中需要实现用户可编辑的输入功能时,通常会在每个列表项中嵌入一个EditText。本示例"android listview中有edittext的demo"就是针对这种场景进行的实践。以下是关于这个主题的详细知识点: 1. **...
标题"ListView+EditText混乱问题"所提及的就是这样一个典型的问题:当用户在ListView中的一个EditText控件中输入文字后,如果ListView滚动或用户点击其他地方,EditText的内容可能会显示不正确,甚至丢失。...
这个问题通常源于ListView的复用机制,即ListView的每个Item(ViewHolder)在滚动时会被复用,如果不正确处理,EditText的数据就会混淆。 首先,我们要理解ListView的工作原理。ListView通过Adapter来绑定数据源,...
- 应用重启或者ListView刷新时,需要从存储中恢复EditText的值。可以通过读取SharedPreferences或查询SQLite数据库,将数据填充回对应的EditText中。 6. **事件监听**: - 为了捕获用户在EditText中的输入,需要...
当在ListView的条目(Item)中集成EditText时,可以实现用户输入交互,例如在列表中进行编辑、评论等操作。以下是对这个功能的详细解释和实现步骤。 1. **ListView的基本使用** - ListView是一个可滚动的视图容器...
然而,当在ListView的每个Item中添加EditText时,可能会遇到一个棘手的问题:用户在EditText中输入的数据可能会在滚动ListView时“窜行”,即原本输入到某个Item的数据在滚动后显示在了其他Item上。这个问题主要是...