我现在面临一个问题,我真的不知道发生了什么。
首先让我解释一下我想做什么。 我有一个自定义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天。
答案 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);
}