我有ListView
每个项目text view
和check box
点击每个项目时我正在更改复选框状态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);
}
}
});
我也试过使用runaable:
checkBox.post(new Runnable() {
@Override
public void run() {
checkBox.setChecked(true);
}
});
正在正确使用Marshmallow,但没有在Nougat上工作!
注意:当我点击第二个项目时,第一个项目刻度显示在牛轧糖中。
答案 0 :(得分:1)
为了显示所选项目的列表,您需要保持复选框状态
答案 1 :(得分:0)
您的代码流程如下:
您点击了一个复选框 - &gt;它检测到它被点击并检查自己 - &gt;您正在检查是否已检查 - &gt;如果已选中,则使用setChecked(false)取消选中复选框。
删除以下代码,它应该有效:
...
XYZ-7, ABC987654321
1) 8 54°38,177’N, 13°33,573’E; 54°38,094’N, 13°33,237’E
2) 5 54°39, 377’ N, 13°33,940’E,
23) 2 53°40,207’N, 14°32,522’E; 53°40,207’N, 14°32,557’E
...
答案 2 :(得分:0)
使用此侦听器检查是否选中了复选框,并相应地执行操作。
checkBox setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
}
}
);
答案 3 :(得分:0)
如果您仍然遇到问题,我已经找到解决此问题的方法:
替换下面的代码:
checkBox.post(new Runnable() {
@Override
public void run() {
checkBox.setChecked(true);
}
});
查看我的代码,看看它是否有效:
checkBox.post(new Runnable() {
@Override
public void run() {
checkBox.setChecked(true);
checkBox.jumpDrawablesToCurrentState();
}
});