RecyclerView解决EditText复用导致数据错乱的问题

 

界面布局与上图类似,在RecyclerView的listitem里面有EditText,并且是可输入的,输入数字之后界面需要实时同步刷新。在开发界面的时候发现,EditText由于RecyclerView的复用会导致数据错乱的情况,解决办法有两种:

第一种:

关闭RecyclerView的复用,这种办法只适合RecyclerView的listitem项目很少的情况,因为项目一旦增多,可能出现滑动很卡顿的问题。

具体做法为在onCreateViewHolder里面调用holder.setIsRecyclable(false);

第二种:

if (holder.numTxt.getTag() != null && holder.numTxt.getTag() instanceof TextWatcher) {
            holder.numTxt.removeTextChangedListener((TextWatcher) holder.numTxt.getTag());
        }
        holder.numTxt.setText(productCount == 0 ? "0" : String.valueOf(productCount));
        TextWatcher textWatcher = new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                String str = s.toString();
                if (!TextUtils.isEmpty(str)){
                    mList.get(position).setProductCount(Integer.parseInt(str));
                }
            }
        };
        holder.numTxt.addTextChangedListener(textWatcher);
        holder.numTxt.setTag(textWatcher);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晒干的老咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值