当其中一个复选框取消选中android时,取消选中CheckboxAll

时间:2014-07-23 13:59:09

标签: android xml checkbox

在我的应用程序中,我尝试创建一个带有多个复选框的数组。当我点击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);
                }
            }
        });
    }

1 个答案:

答案 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;
        }
    }
}