维护CheckBox行为

时间:2013-02-18 05:33:28

标签: android checkbox

我的布局中有一个全选复选框按钮和一个列表视图,每个复选框都有一个复选框。我为select all复选框添加了以下代码:

selectall.setOnCheckChangedListener代码: -

for(int i=0; i < listView.getChildCount(); i++){
    RelativeLayout itemLayout = (RelativeLayout)listView.getChildAt(i);
    CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.MyListViewCheckBox);
    cb.setChecked(true);
}

这里我维护每个列表视图项

holder.mcbGoupMember.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    // TODO Auto-generated method stub

                    commonFriends.get(position).setChecked(isChecked);
                }
            });

现在我遇到了这种情况,我希望当我手动选择所有复选框项目时,然后在那一刻,自动选中所有按钮/复选框,反之亦然。

我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分:0)

请参阅此示例程序listview checkbox scroll issue

答案 1 :(得分:0)

您可以只保留一次检查的项目数量的简单计数。如果您检查某个项目,请将其增加1,如果取消选中某个项目,请将其减1。每次增加/减少后,检查此检查的项目编号是否等于列表中的项目数,并选中全部,如果是。只需确保selectall.setOnCheckChangedListener将列表复选框值设置为isChecked中收到的值。例如:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  for(int i=0; i < listView.getChildCount(); i++){
      RelativeLayout itemLayout = (RelativeLayout)listView.getChildAt(i);
      CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.MyListViewCheckBox);
      cb.setChecked(isChecked);
  }
}