今天记录下关于RecyclerView中item中EditText使用的问题

本文探讨了在RecyclerView中使用EditText进行数据输入时常见的数据错乱问题,特别是在item复用时。介绍了如何通过移除并重新添加TextWatcher监听器来避免数据混乱,确保实时监听的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

 

今天记录下关于RecyclerView中item中EditText使用的问题

当我们在item中使用监听的时候经常会遇到些问题,比如数据在EditText中输入后滚动发现,复用item中数据错乱,经常我们会用添加监听来保存数据,这样在刷新时候就遇到了问题。如果不将监听移除在为EditText设置内容时就会响应监听中的执行代码。影响数据显示。

下面是我在做这样的需求时,由于是要对每次有输入要实时监听,我用了onTextChanged,如果不需要,使用afterTextChanged就可以。这里主要是讲EditText设置内容时会响应监听。就需要在设置内容之前移除监听,然后设置内容,在添加监听。

onBindViewHolder中做如下操作
if(holder.et_num.getTag() instanceof  TextWatcher){
            holder.et_num.removeTextChangedListener((TextWatcher)holder.et_num.getTag());
        }

if(StringUtils.isEmpty(moneyUsingDetailItem.getNum())){
            holder.et_num.setText("");
        }else{
            holder.et_num.setText(moneyUsingDetailItem.getNum());
        }


TextWatcher numWatcher = 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) {

            }
        };
        holder.et_num.addTextChangedListener(numWatcher);
        holder.et_num.setTag(numWatcher);

 如有想法欢迎交流

 

 


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值