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();
                            }
                        });