在我的应用程序中,我尝试创建一个带有多个复选框的数组。当我点击CheckBoxAll选择所有复选框时我的应用程序工作,当我取消选中CheckBoxAll取消选择所有chekboxes.But,如果我取消选择其中一个chekboxes时所有这些检查,CheckBoxAll它不会取消检查..
这是我的数组
ArrayList<CheckBox> boxes = new ArrayList<CheckBox>();
checkBoxAll = createCheckBox(R.id.checkBoxAll);
boxes.add(checkBoxAll);
checkBoxCompany = createCheckBox(R.id.checkBoxCompany);
boxes.add(checkBoxCompany);
checkBoxType = createCheckBox(R.id.checkBoxType);
boxes.add(checkBoxType);
checkBoxName = createCheckBox(R.id.checkBoxName);
boxes.add(checkBoxName);
checkBoxPhone = createCheckBox(R.id.checkBoxPhone);
boxes.add(checkBoxPhone);
checkBoxAddress = createCheckBox(R.id.checkBoxAddress);
boxes.add(checkBoxAddress);
checkBoxEmail = createCheckBox(R.id.checkBoxEmail);
boxes.add(checkBoxEmail);
checkBoxwebSite = createCheckBox(R.id.checkBox4WebSite);
boxes.add(checkBoxwebSite);
这是我的功能
public void checkAllListener() {
checkBoxAll.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
for(CheckBox chk : boxes) {
chk.setChecked(isChecked);
}
}
});
}
答案 0 :(得分:0)
您需要创建逻辑来检测单击复选框的时间并取消选中checkBoxAll。您需要一个监听器来处理任何复选框的检查。
public class checks extends Activity implements OnCheckedChangeListener{
private ArrayList<CheckBox> boxes;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
boxes = new ArrayList<CheckBox>();
checkBoxAll = createCheckBox(R.id.checkBoxAll);
boxes.add(checkBoxAll);
checkBoxCompany = createCheckBox(R.id.checkBoxCompany);
boxes.add(checkBoxCompany);
checkBoxType = createCheckBox(R.id.checkBoxType);
boxes.add(checkBoxType);
checkBoxName = createCheckBox(R.id.checkBoxName);
boxes.add(checkBoxName);
checkBoxPhone = createCheckBox(R.id.checkBoxPhone);
boxes.add(checkBoxPhone);
checkBoxAddress = createCheckBox(R.id.checkBoxAddress);
boxes.add(checkBoxAddress);
checkBoxEmail = createCheckBox(R.id.checkBoxEmail);
boxes.add(checkBoxEmail);
checkBoxwebSite = createCheckBox(R.id.checkBox4WebSite);
boxes.add(checkBoxwebSite);
for(CheckBox check : boxes){
check.setOnCheckedChangeListener(this);
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()) {
case R.id.checkBoxAll:
for(CheckBox chk : boxes) {
chk.setChecked(isChecked);
}
break;
default:
boxes.get(0).setChecked(false);
break;
}
}
}