ListView滑动触发addTextChangedListener事件

来源:互联网 发布:mm商场软件下载 编辑:程序博客网 时间:2024/06/06 19:09

问题:Listview 的item 中editview ,监听editview 的文本变化,设置item中的信息,设置addTextChangedListener, 会发现每个item的监听都被触发,发现每个item项中的editText显示数据都一样,在调用notifyDataSetChanged 后,adapter中数据全部都变成一样的。

原因:listview的缓存机制

解决:

一、不使用复用viewholder;

二、在getView()方法中添加文本监听改变的标识符boolean  textChanged = true,首先为editView添加输入监听

@Overridepublic void afterTextChanged(Editable s) {    if (!ischange) {        mList.get(position).setSuggestPrice(s.toString());    }}

其次:

ischange = true;etProductPrice.setText(mList.get(position).getSuggestPrice());ischange = false;

调用notifyDataSetChanged的时候,之后etProductPrice.setText(mList.get(position).getSuggestPrice());会立即执行afterTextChanged(Editable s)方法

原创粉丝点击