我有一个包含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似乎有我提到的问题。
答案 0 :(得分:1)
您需要调用ListView适配器的notifyDataSetChanged()。如果不是,您的ListView中的数据将不会刷新,您的复选框将保持选中状态。
答案 1 :(得分:0)
如果每个ListView项目中都有一个复选框,则必须循环整个“其他”(必须取消选中)项目,并取消选中它。这不是一个实用的方法。
答案 2 :(得分:0)
我通常使用Arraylist来填充Listview。在数组列表中必须有像boolean fields这样的对象。因此,当选中或取消选中复选框时,表示布尔字段更改为false或true,然后再现列表视图。如果你按照这种方式,那么它必须是简单的,首先循环通过Arraylist并将所有布尔值更改为false,然后将所选的一个更改为true,即all,然后android将为您刷新视图。希望它有所帮助。