0

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

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

现在我陷入了一种情况,我希望当我手动选择所有复选框项目时,此时应该自动选中全选按钮/复选框,反之亦然。

我怎样才能做到这一点?

4

2 回答 2

0

请参阅此示例程序有关listview 复选框滚动问题

于 2013-02-18T05:38:15.687 回答
0

您可以只简单计算一次检查的项目数。如果您选中一项,则将其加一,如果您取消选中一项,则将其减一。每次增加/减少后,检查此检查的项目数是否等于列表中的项目数,如果是,请检查全选。只需确保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);
  }
}
于 2013-02-18T06:00:51.497 回答