Android 在ListView中的复选框中,setChecked(true)在牛轧糖中不起作用
我有Android 在ListView中的复选框中,setChecked(true)在牛轧糖中不起作用,android,listview,checkbox,Android,Listview,Checkbox,我有列表视图,每个项目都有文本视图和复选框 单击每个项目时,我正在更改复选框状态true/false,以在列表中显示所选项目 listSpinner.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Helper.hi
列表视图
,每个项目都有文本视图
和复选框
单击每个项目时,我正在更改复选框状态true/false,以在列表中显示所选项目
listSpinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Helper.hideKeyBoard(getApplicationContext(), view);
checkBox = (CheckBox) view.findViewById(R.id.chkbox_value);
if (checkBox.isChecked()) {
checkBox.setChecked(false);
}
else{
checkBox.setChecked(true);
}
}
});
它对棉花糖起作用,但对牛轧糖不起作用
注意:当我点击第二项时,第一项勾号显示在牛轧糖中。您的代码流程如下: 您正在单击一个复选框->它检测到它被单击并且它自己检查->您正在检查它是否被选中->如果它被选中,那么您正在使用setChecked(false)取消选中您的复选框 删除以下代码,它应该可以工作:
if (checkBox.isChecked()) {
checkBox.setChecked(false);
}
else{
checkBox.setChecked(true);
}
使用此侦听器检查是否选中复选框,并相应地执行操作
checkBox setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
}
}
);
为了显示所选项目的列表,您需要维护复选框状态如果您仍然面临以下问题,我已找到解决方案: 替换以下代码:
checkBox.post(new Runnable() {
@Override
public void run() {
checkBox.setChecked(true);
}
});
要查看我的代码,请执行以下操作:
checkBox.post(new Runnable() {
@Override
public void run() {
checkBox.setChecked(true);
checkBox.jumpDrawablesToCurrentState();
}
});
@gprathour我想我在问题中解释过,当我点击listview中的项目时,应该勾选该项目复选框。当我在棉花糖中跑步时,复选框被勾选,但在牛轧糖中却没有!我清楚我没有得到这个东西,如果(checkBox.isChecked)那么checkBox.setChecked(false)@gprathour当使用复选框显示我们使用的状态时,
isChecked
将返回复选框是否选中,当点击时,如果它已经被选中,我们将取消选中。您是否在适配器中维护复选框状态?如果不是,您必须使用数据集变量来维护它,以区分选中或不显示适配器代码。我想问题在于视图的回收
checkBox.post(new Runnable() {
@Override
public void run() {
checkBox.setChecked(true);
checkBox.jumpDrawablesToCurrentState();
}
});