首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在RecyclerView中检查一个radioButton也会选中其他随机单选按钮

是由于RecyclerView的复用机制导致的。RecyclerView是Android中常用的列表控件,它通过复用Item View来提高性能和内存利用率。

当RecyclerView滚动时,Item View会被重复使用,即被绑定到新的数据项上。RadioButton是一个状态控件,它的选中状态是由其所在的组内其他RadioButton的选中状态共同决定的。当一个RadioButton被选中时,其他RadioButton会自动取消选中。

在RecyclerView中,当一个RadioButton被选中后,它的状态会被保存在ViewHolder中。当滚动时,RecyclerView会将之前选中的RadioButton绑定到新的数据项上,导致其他随机单选按钮也被选中。

为了解决这个问题,可以在RecyclerView的Adapter中添加一个选中状态的列表,用于保存每个RadioButton的选中状态。当RadioButton的选中状态改变时,更新对应位置的选中状态列表。在绑定ViewHolder时,根据选中状态列表设置RadioButton的选中状态。

以下是一个示例代码:

代码语言:txt
复制
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<DataItem> mDataList;
    private List<Boolean> mCheckedList;

    public MyAdapter(List<DataItem> dataList) {
        mDataList = dataList;
        mCheckedList = new ArrayList<>(Collections.nCopies(dataList.size(), false));
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        DataItem item = mDataList.get(position);
        holder.radioButton.setText(item.getName());
        holder.radioButton.setChecked(mCheckedList.get(position));
    }

    @Override
    public int getItemCount() {
        return mDataList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        RadioButton radioButton;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            radioButton = itemView.findViewById(R.id.radioButton);

            radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    int position = getAdapterPosition();
                    mCheckedList.set(position, isChecked);
                }
            });
        }
    }
}

在这个示例中,我们使用了一个mCheckedList列表来保存每个RadioButton的选中状态。在ViewHolder中,我们通过设置RadioButton的选中状态来更新界面。当RadioButton的选中状态改变时,我们更新对应位置的mCheckedList列表。

这样,即使RecyclerView滚动,每个RadioButton的选中状态也能正确地保持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Qt Style Sheet实践(三):QCheckBox和QRadioButton

单选按钮只允许用户一组选项中选择一个,且当其中一个选中的时候,按钮其他单选按钮自动取消。复选框则可以让用户同时选中多个选项,这在多项选择的情况下非常有用。...单选按钮和复选框应用广泛,WEB表单、软件配置界面常常是不可或缺的元素。这篇博文主要讲述Qt单选按钮和复选框如何通过样式表进行外观定制。...基本实现       单选按钮(QRadioButton)的基本特征是互斥。当一个按钮选中,系统自动取消其他按钮选中状态。当然,前提是这些按钮都要放置同一个父组件(Parent Widget)。...这样,当一个按钮选中的时候其他选中按钮将被自动取消。但是缺点是:如果我们想要获取当前被选中按钮是哪一个,不太方便判断。一个简单而粗暴的方法是,循环遍历每个单选按钮的状态进行检查。...具体参见《QT获取选中radioButton的两种方法》及《QT根据ID设置radio按钮》。       如何进行样式定制呢?QRadioButton定制分成两个两个部分:选中按钮和文本。

9.6K60

C++ Qt开发:RadioButton单选框分组组件

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,Qt我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QRadioButton...QRadioButton是Qt框架一个部件(Widget),用于提供单选按钮的界面元素。单选按钮允许用户从多个互斥的选项中选择一个,通常用于表示一组相关但互斥的选项。...setAutoExclusive(bool enabled) 设置是否自动将同一组其他单选按钮设为未选中状态。...private slots: void MySlots(); 其次主程序mainwindow.cpp我们通过new QBUttonGroup新建一个按钮组,并将其加入到group_sex组内...对单选框进行分组操作,同样可以实现判断选中状态,通过依次检查isChecked()单选框的状态即可实现,但是此类方式并不推荐使用。

1.1K10
  • 软件测试|超好用超简单的Python GUI库——tkinter(十一)

    前言我们使用音乐播放软件时,我们想选择播放模式时,我们只能在随机播放,单曲循环,列表循环三种方式中选择一个,这就是我们常见的单选的情况,我们设计我们的GUI时,也有可能遇到单选的情况,tkinter...同样给了我们实现单选的控件——Radiobutton,本文就给大家介绍一下单选框控件Radiobutton的使用。...Radiobutton单选框控件单选按钮控件(Radiobutton)允许用户选择具体的选项值,不过与 Listbox 相比,单选按钮控件仅允许用户选择单一的选项值,各个选项值之间是互斥的关系,因此只有一个选项可以被用户选择...如果设置为 False,则会改变单选按钮的样式,当点击时按钮变成 "sunken"(凹陷),再次点击变为 "raised"(凸起)selectcolor设置当 Radiobutton选中状态的时候显示的图片...variable 选项应该都指向同一个变量,通过将该变量与 value 选项值对比,可以判断用户选中了哪个按钮

    1.3K10

    Android widget之CompoundButton

    简介 具有两个状态的按钮,已选中或未选中。当按下或点击按钮时,状态自动更改。...使用 相比较Button而言多出了一个监听事件(接口) CompoundButton.OnCheckedChangeListener 当复合按钮检查状态发生变化时调用。...setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) 当这个按钮检查状态发生变化时,注册一个回调...RadioButton 单选按钮:是可以选中或取消选中的双状态按钮。当单选按钮被取消选中时,用户可以单击来选中它。 注:单选按钮通常与RadioGroup在一起使用。...当多个单选按钮RadioGroup内时,检查一个单选按钮将取消选中所有其他单选按钮。 <?xml version="1.0" encoding="utf-8"?

    2.3K20

    真滴牛逼,轻松实现RecyclerView 拖动多选功能

    [1240] 文件选择我们日常开发一个比较常见的功能,分为文件单选和多选,单选比如头像上传,多选比如相册的多图选择、多文件选择删除等。...Android开发,系统为我们提供了单选/多选的控件,单选RadioButton/RadioGroup(),多选则用CheckBox(☑️)。这些都是比较基础的,相信才入门的应该都会已掌握。...抛开单选不说,今天来说说文件多选,APP上,多选其实使用起来比较麻烦,我们的一个一个地勾选Checkbox(☑️),如果文件有几十个,是不是非常耗费时间?...体验不好,其实在pc 端是不存在这个问题,pc 端,我们只需拖动鼠标,就能一下将我们需要选择的多个文件选中。APP是能像pc 一样拖动来实现多选吗?...,实际应用,我们可以让Adapter 实现DragSelectReceiver,这样,记录选中与未选中就很方便。

    2.1K00

    【愚公系列】2023年09月 WPF控件专题 RadioButton控件详解

    在这个例子,第一个RadioButton选中,并且可以在后台代码中使用IsChecked属性检查是否选中了该选项。...1.属性介绍 RadioButton单选按钮)是WPF中常用的控件之一,它可以与其他RadioButton控件进行分组,使得同一组内只有一个控件可以被选中。...单选列表:WPF,我们可以利用RadioButton来实现单选列表,用户只能选择其中一个选项。...问卷调查:问卷调查,我们通常会针对一个问题提供多个选项,利用RadioButton可以实现单选。 设置界面:设置界面,我们可以利用RadioButton来提供多个选项,同时只能选择其中一个。...数据筛选:在数据筛选的过程,我们可以利用RadioButton来实现单选筛选条件中选择一个选项。 RadioButton可以用于任何需要单选功能的场景,让用户只能从多个选项中选择一个

    87311

    CheckBox和RadioButton使用大全

    通过isChecked方法来判断是否被选中,当用户单击时可以在这两种状态间进行切换,触发一个OnCheckedChange事件。...二、RadioButton RadioButton单选按钮Android开发应用的非常广泛,比如一些选择项的时候,会用到单选按钮。它是一种单个圆形单选框双状态的按钮,可以选择或不选择。...RadioButton没有被选中时,用户能够按下或点击来选中它。但是,与复选框相反,用户一旦选中就不能够取消选中。当用户选中的时候触发一个OnCheckedChange事件。...没有RadioGroup的情况下,RadioButton可以全部都选中;当多个RadioButton被RadioGroup包含的情况下,RadioButton只可以选择一个。...为了监听单选按钮组的选中事件,Java代码为其添加选择事件监听器,具体代码如下: public class MainActivity extends AppCompatActivity {

    3.9K100

    Python 图形化界面基础篇:添加单选按钮Radiobutton )到 Tkinter 窗口

    Python 图形化界面基础篇:添加单选按钮Radiobutton )到 Tkinter 窗口 引言 Python 图形化界面基础篇的这篇文章,我们将专注于 Tkinter 如何添加单选按钮...通常,单选按钮将一组相关选项放在一起,用户可以选择其中一个选项,而选择其他选项自动取消之前的选择。 让我们开始学习如何在 Tkinter 窗口中添加单选按钮。...以下是一个示例: selected_option = radio_var.get() 在这个示例,我们使用 get() 方法获取了用户选择的单选按钮的值,并将其存储变量 selected_option...,我们创建了一个自定义样式的单选按钮,设置了字体、文本颜色、背景颜色、选中时的颜色和选中时的响应函数。...通过创建和自定义单选按钮,你可以为你的应用程序增加更多的交互性和功能。接下来的教程,我们将继续学习如何添加其他 GUI 元素,处理不同类型的事件,并构建更丰富和功能强大的图形用户界面应用程序。

    2K71

    速读原著-Android应用开发入门教程(作为简单容器使用的视图组)

    8.3 作为简单容器使用的视图组 8.3.1.单选按钮单选按钮组(RadioButton)是一组逻辑上相关的按钮,它们之中只能有一个选中单选按钮通常单选按钮被设计成圆形的外观。...使用 RadioGroup 组成一个单选列表,需要将 RadioButton 放置一个 RadioGroup 。...XML 属性 android:checkedButton 表示这一组单选按钮 RadioButton 组中被选中按钮,包含在一个 RadioGroup 之中的所有单选按钮只能有一个选中。...根据扩展关系RadioGroup本身即是ViewGroup,也是LinearLayout,因此RadioGroup可以包含RadioButton之外的其他控件。...本例子的第一组文本框和按钮布局文件中指定的,其他代码中指定的。

    78210

    超全的Android组件及UI框架

    LinearLayout 线性布局 LinearLayout 几个重要的 XML 属性 xml 属性    说明 android:id    为组件设置一个资源 id,然后 Java 可以通过 ...RadioButton 单选按钮 5.1 常用属性 RadioButton 单选按钮就是只能够选中一个,所以我们需要把 RadioButton 放到 RadioGroup 按钮,从而实现单选功能...多个 RadioButton被 RadioGroup 包含的情况下,同一时刻只可以选择一个 RadioButton,并用 setOnCheckedChangeListener 来对 RadioGroup...RadioGroup 单选按钮组 6.1 常用属性 要实现 RadioButton 的 单选功能,需要把所有的 RadioButton 放到 RadioGroup 里面  用于将几个 RadioButton... 组在一起形成单选按钮组,实现单选功能,也就是选中一个取消其它选项的选中 RadioGroup 只提供了一个 XML 属性 android:checkedButton 用于指定初始化时选中的 ID

    6.2K30

    安卓开发_单选按钮控件(RadioButton)的简单使用

    最近复习安卓基础的时候发现没有写关于单选按钮、复选按钮的博客,可能因为以前学习的时候感觉太简单了就没有写,现在补上吧 当我们各种客户端注册账号的时候,会有几项单选项,比如选择您的性别。...下面就是学习怎么实现这种效果 一、安卓单选按钮RadioButton表示,因为RadioButton是Button的子类,所以可以使用Button的各种属性 RadioButton一般是不单独使用的需要结合...RadioGroup控件一起使用,将若干个RadioButton放在一个RadioGroup,那么将只能选择RadioGroup的某一个RadioButton 比如讲 语文、数学,英语放在“你最喜欢的课程...被放到了一个RadioGroup,这两个RadioButton的值分别“男”,“女” 表示我们只能选择其中的任意一项选项 效果图: ?...).toString().trim();//获取被选中单选按钮的值 40 Toast.makeText(Ui_RadioButton.this, "选择单选按钮的值为:

    3.3K70

    Swing常用组件

    当用户点击提交按钮时,程序检查哪些复选框被选中,并以弹框的方式显示用户选择的选项。 六、单选按钮(JRadioButton) Swing 通过类 JRadioButton 实例化单选按钮对象。...如果要将多个单选按钮组合成具有互斥关系的单选按钮组,则需要调用 ButtonGroup 对象的成员方法 add(), 添加这些单选按钮对象到同一个 ButtonGroup 对象。...以下是JRadioButton常用的成员方法: isSelected():检查单选按钮是否被选中。 setSelected(boolean selected):设置单选按钮选中状态。...getText():获取单选按钮的文本。 setText(String text):设置单选按钮的文本。 isEnabled():检查单选按钮是否可用。...它们都被添加到一个JPanel,并且通过ButtonGroup对象进行分组,以确保只能选择一个选项。当选择一个选项时,显示相应的信息JLabel

    10710

    【ABAP】 如何实现点击不同按钮动态显示不同的选择屏幕?(附完整示例代码)

    实际业务我们经常会碰到这种情景:一个选择屏幕界面需要根据用户点击的按钮不同来动态显示不同的界面元素,本文就来详细讲解一下实现的过程。...PARAMETERS 和 RADIOBUTTON: PARAMETERS 语句用于定义两个参数 P1 和 P2,它们是单选按钮RADIOBUTTON)。...这些按钮被分组到名为 rad1 的单选按钮。 DEFAULT 'X' 表示默认情况下选中了 P1 单选按钮。这意味着选择屏幕初始化时,P1 单选按钮将被选中。...对于 TY2 组,如果 P2 单选按钮选中,则禁用相关的屏幕元素,否则启用它们。 最后,通过 MODIFY SCREEN 语句应用对屏幕元素的修改。   ...总的来说,这段代码的实现思路是根据用户选择屏幕上选择的单选按钮(P1 或 P2)来控制不同组的选择选项和参数的可见性和活动状态。

    1.3K30

    【愚公系列】2023年11月 Winform控件专题 RadioButton控件详解

    欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...一、RadioButton控件详解RadioButton控件Winform一个常用的控件,用于一组互斥的选项让用户选择一个选项。...同一组选项RadioButton控件要使用同一个容器控件(如Panel或GroupBox)进行包装。代码,可以使用Checked属性来判断RadioButton控件是否被选择。...被选中}注意事项:RadioButton控件必须与同组其他RadioButton控件配合使用,否则无法实现互斥的作用。...然后,“确定”按钮的Click事件,通过检查哪个RadioButton控件被选中,来确定用户选择了哪种出行方式。最后,将结果显示MessageBox

    28421

    matinal:ABAP SELECTION-SCREEN解析

    REPORT 程序中使用生成屏幕控件的语句,默认屏幕编号为1000(可以手动指定) 默认系统占用屏幕号1000-1010 选择界面的描述文本默认为变量名,可以文本元素(转到 -> 文本元素 )中进行调整...默认CHAR类型,长度为1 RADIOBUTTON " GROUP 成组,组内只有一个可以选中的数据,选中的数据标记为'X' 注意不要和MODIF ID 的组混淆 PARAMETERS R_BTN1..." 下划线 " 选择条件行:一般将多选按钮或者单选按钮放到一行时使用 SELECTION-SCREEN BEGIN OF LINE ...." 此处的GV_MSG就是一个可变的文本内容 SELECTION-SCREEN END OF LINE . " 给选择条件加个外框 如果BLOCK没有内容显示时,BLOCK自动隐藏 BLOCK..." WITH FRAME 显示外框 TITLE 外框显示文本,文本元素处理 ... " 选择条件 SELECTION-SCREEN END OF BLOCK BK1 .

    20220

    tkinter -- RadioButton

    Radiobutton单选按钮,即在同一组内只能有一个按钮选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,与其他控件不同的是:它有组的概念 不指定绑定变量,每个Radiobutton自成一组...创建一个 Radiobutton 组,使用绑定变量来设置选中按钮 示例: import tkinter as tk root = tk.Tk() v = tk.IntVar() # 选中value=...不同的组,各个按钮互相不影响 如果同一个按钮使用相同的 alue,则这两个按钮的工作方式完全相同 代码: import tkinter as tk root = tk.Tk() v = tk.IntVar...上述的例子中共有4个 alue 为1的值,当选中其中的一个时,其他三个会被选中选中除了这四个只外的按钮时,四个按钮全部取消 与 Checkbutton 类似,每个 Radiobutton 可以有自己的处理函数...注意虽然同时可以选中两个按钮,但每次点击按钮,执行的代码只有一次 Radiobutton一个比较实用的属性是 indicatoron,缺省情况下为1,如果将这个属性改为0,则其外观是 Sunken

    98020
    领券