首页 > 解决方案 > 单选按钮自动检查 RecyclerView 滚动而不单击

问题描述

我正在开发一个模型测试应用程序,其中每个测试有 20 个问题,每个问题在一个单选组内有 4 个单选按钮选项。

现在,在滚动和选择单选按钮时,我遇到了自动单选按钮检查。

我想知道为什么会出现这个问题以及解决方案。这是我的 RecylerView 示例代码。`

@Override
public void onBindViewHolder(@NonNull QuizQuestionViewHolder holder, int position) {

    final QuestionsWithOption questionsWithOption = questionsWithOptionList.get(position);
    final List<Option> optionList = questionsWithOption.getOptions();

    holder.quizQuestionTextView.setText(questionsWithOption.getTitle());

    if (holder.quizOptionsRadioGroup.getChildCount() == 0) {
        addRadioButtons(holder.quizOptionsRadioGroup, optionList,
                questionsWithOption.getId());
    }
}

private void addRadioButtons(RadioGroup quizOptionsRadioGroup,
                             List<Option> optionList, final int questionId) {

    final RadioButton[] radioButtons = new RadioButton[optionList.size()];

    for(int i = 0; i < optionList.size(); i++){
        radioButtons[i] = new RadioButton(context);
        radioButtons[i].setText(optionList.get(i).getName());
        radioButtons[i].setTextSize(14);
        radioButtons[i].setId(optionList.get(i).getId());
        radioButtons[i].setTag(optionList.get(i));
        radioButtons[i].setPadding(8, 8, 8, 8);

        quizOptionsRadioGroup.addView(radioButtons[i]);
    }

    quizOptionsRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            RadioButton checkedRadioButton = group.findViewById(checkedId);

            Option quizOptions = (Option) checkedRadioButton.getTag();

            Log.d("Checked", quizOptions.getName());
        }
    });
}

这是我的应用程序的屏幕截图。这些单选按钮在滚动后会自动检查。我没有按任何按钮。

`这是我的应用程序的屏幕截图。 这些单选按钮在滚动后会自动检查。 我没有按任何按钮。

标签: androidandroid-recyclerviewradio-buttonradio-groupmultiple-choice

解决方案


嗯,这是关于 recyclerview 的一些有趣的事情。onBindView 函数作为回收器被一次又一次地调用。因此,当您更改单选按钮的检查状态时,其他视图单选按钮也会因为它们利用引用而改变。

解决方案是始终检查在 onBindView 函数中选中和取消选中单选按钮的必要条件


推荐阅读