在ListView中复选框,setChecked(true)在Nougat中不起作用

时间:2017-06-09 10:54:39

标签: android listview checkbox

我有ListView每个项目text viewcheck 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上工作!

注意:当我点击第二个项目时,第一个项目刻度显示在牛轧糖中。

4 个答案:

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