自定义ListView中的复选框和selectAll按钮错误

时间:2016-09-23 07:25:00

标签: android listview checkbox

我现在面临一个问题,我真的不知道发生了什么。

首先让我解释一下我想做什么。 我有一个自定义ListView,显示我的用户详细信息和旁边的复选框。首先,如果我选中了所有复选框,则selectAll复选框将不会自行检查。

因此,我已实施以下代码。它最初工作得很好,但最后我发现,如果我有太多要求我向下滚动的项目,系统会检测到我取消选中复选框并帮我扣除我的"计数&#34 ;

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(buttonView == selectAll){
        selectAll.setChecked(isChecked);
        for(int i = 0; i < theList.size(); i++){
            theList.get(i).setSelected(isChecked);
            theList.get(i).setCheckAll(isChecked);
        }
        notifyDataSetChanged();

    }else{
        int position2 = (Integer) buttonView.getTag();
        if(isChecked){
            theList.get(position2).setSelected(true);
            System.out.println("count here positions:"+ position2);
            count++;
            System.out.println("count here:"+ count);
            if(count == theList.size())
            {
                selectAll.setChecked(true);
            }
            //String this_is_the_comment = theList.get(position2).getApprComments();
            //System.out.println(this_is_the_comment);
        }else{
            theList.get(position2).setSelected(false);
            count--; //when i scroll down the if condition will come to here
            System.out.println("count here: -- "+count);
            if (selectAll.isChecked()) {
                selectAll.setChecked(false);
                for (int i = 0; i < theList.size(); i++) {
                    theList.get(i).setSelected(true);
                    theList.get(position2).setSelected(false);
                }
            }
        }
    }

请帮助我解决这个错误。我迷路了3天。

1 个答案:

答案 0 :(得分:1)

onCheckedChanged方法中,您最后需要检查是否检查了所有项目,然后执行selectAll.setChecked(true);

最后在你的方法

中添加它
boolean allChecked=true;
for(int i = 0; i < theList.size(); i++){
    if(theList.get(i).isSelected){
        checker=false;
    }
}
if(allChecked){
    selectAll.setChecked(true);
}