怎么才能ListView随EditText输入内容动态改变

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么才能ListView随EditText输入内容动态改变相关的知识,希望对你有一定的参考价值。

参考技术A 监听输入的内容,作为关键词,遍历listView的数据,符合要求的加到一个新的列表,再把新的数据源设到listView当中。

注意,如果数据太多,这样做会很卡本回答被提问者和网友采纳
参考技术B searchView

如何获取listview的item中的内容

解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值.

大概算法:重写BaseAdapter.getView函数,用一个数组存储EditText中的值,根据position即数组下标,在getView
中动态更新EditText和动态获取EditText中的值.因为ListView中的item是复用的,如果不动态清空或动态获取EditText中
值,就会出现数据紊乱,或者没数据.那么在生成EditText的时候要监控其值的变化.存储下来.
使用方法:

private List<Map<String, Object>> mCheckItemList = new ArrayList<Map<String, Object>>();

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());
参考技术A 在listView里添加数据应该使用了BaseAdapter的子类,也就是某类适配器
而在将ListView中的item的控件和数据相联系是由BaseAdapter中的getView()实现的
一些简单的例子里面不用重写此方法,而比较复杂的item布局就需要去继承BaseAdapter,
然后在getView()方法里去实现

以上是关于怎么才能ListView随EditText输入内容动态改变的主要内容,如果未能解决你的问题,请参考以下文章

android listview 获取 edittext内容 并保存

如何获取listview的item中的内容

怎么将edittext的内容发表到listview

listview中每个item都有一个edittext,怎么把用户输入edittext的值保存到数据库?

android布局如何实现显示填满整个手机屏幕,EditText如何设置能使其样式不随输入内容太多而发生变化。

ListView和EditText使用解决方案