因为之前用第三方封装好的适配器 一般情况下也没发现有问题,但是目前也碰到了这个问题 。按照通常方法如果你调用了notifyDataSetChanged
你直接Textwatcher里面直接修改bean类还是没有用,因为系统会重新绘制。所以导致数据错乱 通过查询一下网友的解决方法 我也试了一下 我发现我通过一个网友所提供的方法解决了 直接贴代码:
//完整代码if (holder instanceof EditTextItemHolder) {
//1、为了避免TextWatcher在第2步被调用,提前将他移除。
if (((EditTextItemHolder) holder).et_text.getTag() instanceof TextWatcher) {
((EditTextItemHolder) holder).et_text.removeTextChangedListener((TextWatcher) (((EditTextItemHolder) holder).et_text.getTag()));
}
// 第2步:移除TextWatcher之后,设置EditText的Text。
((EditTextItemHolder) holder).et_text.setText(bean.getValue());
TextWatcher watcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (TextUtils.isEmpty(editable.toString())) {
bean.setValue("");
} else {
bean.setValue(editable.toString());
}
}
};
((EditTextItemHolder) holder).et_text.addTextChangedListener(watcher);
((EditTextItemHolder) holder).et_text.setTag(watcher);
}
作者:david_zhw
链接:http://www.jianshu.com/p/bd805630b45b