RecyclerView中CheckBox显示混乱的解决办法

RecyclerView 复用出现 CheckBox 或者 设置背景混乱问题 RecyclerView 复用出现 CheckBox 或者 设置背景混乱问题 由于RecyclerView 与ListView 都使用了复用技术,所以会出现滚动后出现CheckBox选中混乱或者是Item的背景混乱问题。 解决办法: 1.在onBindViewHolder(...) 方法中添加下面代码 ViewHolder.setIsRecyclable(f 阅读详情

前言:最近加入了一个团队。独立开发Android端,这对我来说是一个很大的挑战,再以前开发,总有老手带我飙车,很多技术难点和一些第三方工具我都没有接触,现在我必须独自面对这些,但即使是挑战,那就努力面对,慢慢克服。现在这个团队氛围不错,大家都平平等等为了项目的发展默默奉献,没有内耗。大家心中就只有一个念头,将这个项目做好。希望我在这个团队也能得到更多的成长。

现在也没有像以前那么闲,每天有写博客的时间,接下来我会将我在开发中遇到的问题和难点,记录下来,等有空我会将它们理成博客,希望能够为和我一样菜鸟的新手们在开发中少走一些弯路。


RecyclerView和ListView在它们的Item中如果使用了CheckBox的时候,我经常会给checkBox设置OnCheckedChangeListener的监听器,用来监听CheckBox的状态并作出相应的逻辑处理。例如一下代码:

holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked){
                    holder.checkBox.setChecked(true);
                    order.setChecked(true);
                }else {
                    holder.checkBox.setChecked(false);
                    order.setChecked(false);
                }
            }
        });

当我们洋洋洒洒的写下以上代码,并进行编译通过的时候,我们以为一切会运行正常。但运行结果却出乎我们意料:

我们选中的CheckBox在下滑以后,再回去发现并没有选中。

关于这个bug的原因其实很简单,我们都知道RecyclerView和ListView都是做到复用的,当我们Debug的时候你会发现,每当我们划动的时候,由于item被复用,checkbox的选中状态会发生改变,每当我们滑动的时候我们的setOnCheckedChangeListener的代码都会被调用。这就是真正造成我们CheckBox状态异常的元凶。

其实想要解决这个bug其实也很简单,我们只要不使用setOnCheckedChangeListener,将监听器改为setOnClickListener就能解决这个问题。

我们改造一下上面的代码:

        holder.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                holder.checkBox.setChecked(!order.isChecked());
                order.setChecked(!order.isChecked());
            }
        });
这样我们就发现,我们的CheckBox的状态能够按照我们想要的方式进行正常的显示了。
解决带有checkbox的recycleview的滑动选中状态混乱的问题 立即下载

相关推荐

Android完美解决ListView复用导致的Checkbox状态混乱问题

Android完美解决ListView复用导致的Checkbox状态混乱问题,具体见博客 http://www.jianshu.com/p/744dcca03a99

RecyclerView/ListView嵌套CheckBox选中状态错乱解决方案

在讨论这个问题之前应该先了解ListView的复用机制 ListView复用的原理:ListView中的每一个Item显示都需要Adapter调用一次getView的方法,这个方法会传入一个convertView的参数,返回的View就是这个Item显示的View。如果当Item的数量足够大,再为每一个Item都创建一个View对象,必将占用很多内存,创建View对象

smily的博客 1640

RecyclerView嵌入CheckBox带来的显示问题的解决办法

RecyclerView嵌入CheckBox带来的显示问题的解决办法

RecyclerView与CheckBox结合使用错乱问题

RecyclerView是当前流行的数据视图展示框架 但是,当我们使用RecyclerView与CheckBox结合使用时,碰撞出了勾选错乱的火花 那么接下来我们就来粗暴的解决掉这个小火星 首先,我们来看代码 private Context context; private List list; private SparseBooleanArray mCheckStates=n

DANGEROUS_HUI的博客 2849

Recyclerview由于ViewHolder的复用显示错乱问题解决

Recyclerview由于ViewHolder的复用显示错乱问题解决

RecyclerView中使用CheckBox出现勾选混乱的解决方法

主要为大家详细介绍了RecyclerView中使用CheckBox出现勾选混乱的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

RecyclerView中使用CheckBox出现勾选混乱的解决方案

RecyclerView的复用机制导致添加CheckBox会出现问题,目前网上没有什么好的解决方案,这篇博客将彻底解决这个问题

Zackratos的博客 7699

Rust 与 Golang 深度对决:从语法到应用场景的全方位解析

Rust 定义函数以fn关键字开头,参数需明确指定类型,返回值类型紧跟在箭头->之后。// 定义函数add,接收两个i32类型参数a和b,返回i32类型结果,功能为两数相加a + bRust 和 Golang 各有千秋,在不同领域展现独特优势。Rust 凭借强大的内存安全与高性能,在系统编程、网络编程以及对内存安全和性能要求高的场景中表现突出;Golang 则以简洁语法和出色并发性能,在云计算、分布式系统、Web 开发等领域占据一席之地。

muyouking 1769

android开发:RecycleView和checkBox组合使用引起数据错乱解决方案

今天在使用RecycleView和checkBox做列表时发现一个很有趣的问题,当我选中某一个checkBox后,RecycleView向下滑动时发现其他的checkBox也被选中了,bug图如下: 发生这个问题的原因在于RecycleView的复用机制,当我们向下滑动时RecycleView会复用离开屏幕的Holder从而来提高效率,而Holder会保存checkBox的选中状态,所以出...

一个程序员-二白的博客 851

InfiniBand(IB)实战指南:从硬件配置到性能优化

本文是一份详尽的InfiniBand实战指南,涵盖从硬件选型、部署到驱动配置、性能优化的全流程。重点解析了InfiniBand作为AI训练与高性能计算(HPC)核心网络的优势,特别是其支持的RDMA技术如何实现微秒级低延迟。文章提供了硬件匹配、NCCL压测、内核参数调优及在PyTorch分布式训练中启用IB的实操步骤,旨在帮助工程师构建和优化高性能计算集群。

mqtt6iot的博客 580

线性回归LinearRegression

对视频中线性回归算法的相关内容进行总结与记录 文章目录一、理论基础二、实例2.1 一元线性回归2.1.1 推导过程2.1.2 代码实现(基于numpy)2.1.3 代码实现(基于sklearn)2.2 多元线性回归2.2.1 代码实现(基于numpy)2.2.2 代码实现(基于sklearn) 一、理论基础 回归 通常是指利用某个函数,尽可能把数据样本点“串”在一起,用于描述输入变量和输出变量间的变化关系 线性回归 特点:用来把数据“串”起来的那个函数是线性的 (一元线性回归(一个自变量) &a.

邱邱邱的博客 1068

Recycleview滑动时,选中的CheckBox出现消失、错乱问题

该如何解决这个问题呢?查找很多资料,大部分都是建议使用SparseBooleanArray(用于跟踪记录哪些位置被选中)这样方式去处理,但是它并不能解决Recycleview滑动时已选中CheckBox出现错乱或变成未选中的问题。Recycleview的Item含有CheckBox,已经对部分Item项的进行CheckBox选中,在上下滑动过程中,CheckBox状态会出现错乱现象或消失问题。我的方法是:把CheckBox放进容器里,让容器来关联CheckBox的状态,CheckBox啥也不干。

linvisf的博客 660

手把手教你学 GPU KMD”相关内容的专栏简介与目录

本专栏系统讲解GPU内核模式驱动(KMD)开发技术,涵盖四大核心模块:1)GPU驱动架构基础,解析UMD/KMD协同机制;2)KMD核心功能,包括内存管理、命令提交、中断处理等;3)底层硬件交互,详解PCIe/DMA传输、多级页表等;4)实战进阶,结合Linux DRM框架代码分析,探讨GPU虚拟化与性能优化。面向具备OS和C语言基础的开发者,提供从理论到实践的完整学习路径,帮助深入理解图形/计算驱动栈的底层实现原理。

amy_mhd的博客 154

RecyclerView中使用CheckBox勾选混乱问题解决以及单选功能的实现

一.RecyclerView + CheckBox勾选混乱问题解决 RecyclerView中使用CheckBox时因为RecyclerView布局会重用,所以在勾选时出现勾选混乱。如图 勾选 0号位和2号位 21 23也被勾选了。 此时适配器中的代码 @Override public void onBindViewHolder(ViewHolder holder, final int position) { holder.mTextView.setText(mList.get(positi..

u010227042的博客 1062

PyCharm安装PyQt5及工具详细教程

PyCharm是一款功能强大的Python集成开发环境(IDE),而PyQt5是一个用于创建GUI应用程序的流行Python库。在本教程中,我将指导您如何在PyCharm中安装PyQt5及其相关工具,并提供相应的源代码示例。安装完成后,启动PyCharm并创建一个新的项目。为了隔离项目的依赖项,我们建议在PyCharm中使用虚拟环境。在创建项目的过程中,您可以选择创建新的虚拟环境或使用现有的环境。根据您的操作系统,选择适当的版本并按照安装向导的指示进行安装。首先,您需要下载并安装PyCharm。

CfProgram的博客 588

Opencv项目实战:20 单手识别数字0到5

今天要做的是单手识别数字0到5,通过在窗口展示,实时的展示相应的图片以及文字。在这里,我提供一下识别更多数字的方法(0-10)。首先最简便的是双手识别,完全不用更改代码,把图片处理好就行了;其次,就是按照最上面的那张图片,参数figureup是一个长度为5的列表[0,0,0,0,0],你可以参照着手势将其打印出来,然后将其用if条件判断。当然,在我们这边最常见的还是华北手势表示数字,大家按照自己的习惯来就行。

m0_62919535的博客 2877

RecyclerView+checkbox滑动导致复用混乱问题的解决方案

最近做一个项目,里面遇到了一个小问题吧我觉得这些问题也是我们时常会用到的。我们需要在用户新注册的时候为他推荐一些人来选择关注。用到了RecyclerView 那么在RecyclerView的Adapter里面用到的是checkbox让用户有选择的进行关注,当列表足够多的时候这时下拉就会产生checkbox复用的混乱问题,我们发现,我们选择或者取消选择再下拉时连位置都改变了。让人非常烦恼。下面就来看

超级无敌大兔纸 4762

Python爬虫实战:全面解析裁判文书网法律文书抓取与分析

本文详细介绍了如何使用Python爬虫技术,分别通过Requests+BeautifulSoup、Selenium和Scrapy等方式,爬取裁判文书网的法律文书信息,并进行了验证码处理、数据存储和可视化分析。网页结构分析与数据提取;爬虫框架的使用;验证码处理策略;数据分析与可视化。爬取更多法律文书网站的数据;爬取文书的全文内容;构建法律文书搜索引擎;使用自然语言处理技术对法律文书进行深入分析。

2201_76125261的博客 1331

RecyclerView中使用checkbox遇到的问题

今天用recyclerview时候发现checkbox重复使用会导致OnCheckedChangeListener 出现一个不太友好的问题,问题是这样的: Recyclerview 会回收使用组件,回收checkbox的时候会触发OnCheckedChangeListener 事件,导致我们写的listener中的逻辑会被打乱 比如我选中了一个,那么当view滚动导致这个checkbox 的O

随手记 8334

零倾覆力矩点(ZMP)

从形式上讲,ZMP 指的是空间中相对于一个平面(通常是地平面)抵消接触力矩的点的集合。这个集合实际上是一个轴,而不是一个点,但为了方便起见,让我们按照传统的推导方法来计算地面平面上的 ZMP。这一推导从任何多刚体系统的牛顿-欧拉运动方程开始:其中,为机器人的总质量,为重力矢量,为系统的重心,为加速度,为固定点的角动量变化率。在右侧,表示净接触扭矩,即施加到机器人上的所有接触扭矩之和,坐标取自质心 (COM)。

机器人控制与仿真应用 2371

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android RecyclerView 中多Item的EditText,RadioButton,CheckBox焦点混乱,数据错乱的解决方法

最近在做项目时,UI设计师给了一个设计图,添加多个人的信息时,item里面包含了EditText在填写姓名时出现数据混乱,如下图所示: RecyclerView中EditText的监听处理 这个界面的主要逻辑是监听每个EditText的输入,然后保存到个人对象里,最后保存到服务器上。RecyclerView中Item里EditText的监听可以按如下代码实现: 首先定义个回调接口: public interface OnTextChangeListener{ void onClic

yushuangping的博客 1467

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android中Recyclerview使用9----Recyclerview的条目复用,出现CheckBox或者设置背景混乱问题

由于RecyclerView 与ListView 都使用了复用技术,所以会出现滚动后出现CheckBox选中混乱或者是Item的背景混乱问题。 解决办法: 1.在onBindViewHolder(...) 方法中添加下面代码 ViewHolder.setIsRecyclable(false); 这里直接关闭掉RecyclerView的复用功能,这是不推荐的,通过网上的资料知道,这种...

翟浩浩Android专栏 8193

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: NavigationView侧滑菜单 使用教程
下一篇: Bitmap too large to be uploaded into a texture 解决方案
VikcyWinner
博客等级 码龄11年 12粉丝 25原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值