Android 一次选中一个 CheckBox 问题

Android One CheckBox Selected at a time issue

我有一个包含带有复选框的项目的列表,我需要一次只选择一个复选框。我不能将 listView 与 singleChoice 或 RadioButtons 一起使用。下面是我正在使用的代码,但我不知道为什么不起作用。

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (selectedCheckBox != null) {
        // simulate radio group behavior
        selectedCheckBox.setChecked(false);
        selectedCheckBox = null;
    }

    if (isChecked) {
        selectedCheckBox = (CheckBox) buttonView;
    }
}

问题是复选框仍然处于选中状态,我不知道为什么我将之前的 selectedCheckBox 设置为 false。谁能解释发生了什么?谢谢

更新 我在带有 Android 5.0 的 Nexus 5 上进行了测试,它可以正常工作。 Android 版本 < 5.0 似乎有我提到的问题。

如果每个 ListView 项中有一个复选框,则必须循环整个 "other"(必须取消选中)项,然后取消选中它。这不是一个实用的方法。

我一般用一个Arraylist来填充Listview。在数组列表中必须有布尔字段之类的对象。因此,当复选框被选中或未选中时,这意味着布尔字段更改为 false 或 true,然后列表视图被复制。如果按照这种方式,那一定很简单,先循环遍历Arraylist,把所有的booleans都改成false,然后把选中的改成true,就这样,然后android就会给你刷新视图。希望对你有帮助。

您需要调用:您的 ListView 适配器的 notifyDataSetChanged()。否则,您的 ListView 中的数据将不会刷新,您的复选框将保持选中状态。