RecyclerView+EditText如何解决输入的数据错乱
前言:
相信大家在做列表嵌套了输入框的需求时,都会出现输入框在输入数据后,列表上下滑动,让有内容的输入框滑出视线,在滑动回视线内,这时候你看着刚刚输入框的内容,会不会惊呼一声“amazing”?没错,你没看错,输入框内容不是你输入的,且多滑动几次也不一样的内容!不要着急,以下是我一贯处理这个问题的一些解决办法,大家可以参考!
大家的正常写法应该都是这样的吧
holder. mEditText. setText("测试内容");
改进如下:
holder. mEditText. setText("测试内容");
//1.将position与view进行绑定
holder.mEditText.setTag(position);
//2.设置View的输入监听
holder.mEditText.addTextChangedListener(new MyTextWatcher());
重要方法在监听类
class MyTextWatcher implements TextWatcher{
//总共是3个方法,手机打字,就不写了。看具体逻辑
private Holder mHolder;//可通过构造传进来
public void afterTextChanged(Editable s){
int position = mHolder.mEditText.getTag();
//这里就是具体赋值,每次输入的时候,都会取出当前输入的position,然后对数据集进行实时赋值,当列表滑动出现复用时,由于数据集已经实时记录了输入的值,调用onBindView重新刷新列表时,就不会出现内容错乱了。
mListData.get(position).setCount(Integer.parseInt(s.toString()));
}
}
以上是我个人处理的一个方式,大家有更好的处理方式欢迎分享!个人记录,不保证大家都能有效果,具体看自己需求!
最后,谢谢大家!