我的布局中有一个全选复选框按钮和一个列表视图,每个复选框都有一个复选框。我为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);
}
});
现在我遇到了这种情况,我希望当我手动选择所有复选框项目时,然后在那一刻,自动选中所有按钮/复选框,反之亦然。
我怎样才能实现这个目标?
答案 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);
}
}