RecyclerView与CheckBox的不期而遇

在Android开发中,创建一个包含RecyclerView和CheckBox的应用列表弹窗时遇到问题:选择部分条目后,滚动会导致未选中的条目被选中。通过使用HashMap存储CheckBox状态解决了这个问题,但滚动超过一定数量后,已选状态丢失。原因是RecyclerView的复用机制,当滚动到新的条目时,旧条目的CheckBox状态被错误地应用。解决方案是在绑定ViewHolder前清空CheckBox的监听事件,避免状态混乱。

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

RecyclerView与CheckBox的不期而遇

一、背景

计划是做一个手机应用列表弹窗,而弹窗要展示的内容是手机内自己安装的所有的APP,包括图标,应用名称和包名,采用了AlertDialog+View的方式来实现,代码如下:

  • View
    • 列表项
      • <?xml version="1.0" encoding="utf-8"?>
        <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
        
            android:id="@+id/card_view"
            android:layout_width="fill_parent"
            android:layout_height="70dp"
            android:layout_margin="5dp"
            card_view:cardCornerRadius="5dp"
            card_view:cardElevation="5dp"
            card_view:cardMaxElevation="5dp"
            card_view:contentPadding="5dp">
        
            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="60dp">
        
                <CheckBox
                    android:id="@+id/list_chk"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="6dp"
                    android:gravity="center" />
        
                <ImageView
                    android:id="@+id/list_img"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:layout_marginStart="50dp"
                    android:layout_marginTop="6dp"
                    android:sr
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值