Android One CheckBox在一个时间问题上被选中

时间:2015-06-16 14:46:46

标签: android checkbox

我有一个包含checkBox项目的列表,我需要一次只选择一个checkBox。我不能将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;
    }
}

问题是checkBox仍然保持检查状态,我不知道为什么我将之前的selectedCheckBox设置为false。谁能解释会发生什么?感谢

UPDATE 我在使用Android 5.0的Nexus 5上进行了测试,并且可以使用它。在Android版本< 5.0似乎有我提到的问题。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果每个ListView项目中都有一个复选框,则必须循环整个“其他”(必须取消选中)项目,并取消选中它。这不是一个实用的方法。

答案 2 :(得分:0)

我通常使用Arraylist来填充Listview。在数组列表中必须有像boolean fields这样的对象。因此,当选中或取消选中复选框时,表示布尔字段更改为false或true,然后再现列表视图。如果你按照这种方式,那么它必须是简单的,首先循环通过Arraylist并将所有布尔值更改为false,然后将所选的一个更改为true,即all,然后android将为您刷新视图。希望它有所帮助。