解决RecyclerView代码复用问题

本文介绍了三种解决RecyclerView中代码复用导致的问题的方法:一是通过holder.setIsRecyclable(false)禁止复用,但可能引起卡顿;二是利用额外的标记集合记录已点击状态,根据集合内容调整视图显示;三是确保每个Item视图都有默认值,以防止因未赋值而引发的复用问题。

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

方法一. holder.setIsRecyclable(false);//取消复用,但会造成卡顿

方法二.Adapter下(就是添加一个标记集合,当是否点击,如果是就添加到这个集合中,否就移除,再判断一次当前是否在这个集合中,是就显示点击的状态,否就显示未点击状态)

privateList<Integer> Livelist=new ArrayList<>();

 

onBindViewHolder

playview.LiveButton().setTag(position);

       playview.LiveButton().setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                if (the_first){

                    if (!Livelist.contains(playview.LiveButton().getTag())){

playview.LiveButton().setButtonDrawable(R.drawable.ic_live_on);

       

    }

 

 

                }

            }

        });

if (Livelist.contains(position)){

   playview.LiveButton().setButtonDrawable(R.drawable.ic_live_on);

   }

else {

   playview.LiveButton().setButtonDrawable(R.drawable.ic_live);

   }

方法三:还有一种情况是这样的,当你没有对该控件赋值,例如没有对该Imageview添加图片,也会造成复用,所以,需要添加默认的图片,不管是否已经添加了图片.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值