RecyclerView EditText 数据错乱问题

因为之前用第三方封装好的适配器 一般情况下也没发现有问题,但是目前也碰到了这个问题  。按照通常方法如果你调用了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

猜你喜欢

转载自blog.csdn.net/w6718189/article/details/76189046