如何在选中一个或多个复选框后启用按钮?

时间:2013-11-10 16:03:32

标签: android button if-statement checkbox

我有一个问题,如果我有一个复选框列表,但我不知道有多少,因为它们是由用户生成的,如何在至少一个或多个复选框时禁用/启用删除按钮检查? 到目前为止我有这个代码 我是编程的新手,请具体请 提前谢谢。

    @Override
    public void onCheckedChanged(CompoundButton cb, boolean DeleteButton) {
        if(cb.isChecked()){
            DeleteButton.setEnabled(true);
        }
        else if(DeleteButton.isEnabled()){
            DeleteButton.setEnabled(false);

3 个答案:

答案 0 :(得分:1)

如果您只想知道是否选中了一个或多个CheckBoxes,请创建int成员变量并在选中复选框时添加该变量

 public class MyActivity
{
    int count = 0;

    // oncreate...

   @Override
public void onCheckedChanged(CompoundButton cb, boolean DeleteButton) {
    count = (DeleteButton) ? count+1 : count - 1; // if is checked then add
                                                 // add 1 to count else decrement
    // I'm not sure about what is below but now you have the count
    if(cb.isChecked()){
        DeleteButton.setEnabled(true);
    }
    else if(DeleteButton.isEnabled()){
        DeleteButton.setEnabled(false);
    }
}
};

现在,如果计数大于0(您至少检查了一个CheckBox,则禁用/启用按钮的方式就像

@Override
public void onCheckedChanged(CompoundButton cb, boolean DeleteButton) {
    count = (DeleteButton) ? count+1 : count - 1; // if is checked then add
                                                 // add 1 to count else decrement
        DeleteButton.setEnabled(count > 0);  // if count > 0 will be enabled
}
};

但我认为你对param的第二个onCheckChanged()感到困惑。它表示是否检查了Button,而不是Button是什么。

答案 1 :(得分:0)

您可以管理已检查项目的列表,每当更改检查状态时,检查列表是空的还是有一些项目,然后相应地处理启用或禁用按钮

    cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            if (isChecked)
                list.add(itemId);
            else
                list.remove(itemId);


            button.setEnabled(list.size() > 0); 

        }
    });

答案 2 :(得分:0)

如果我误解了您的问题,请告诉我,但如果您想要在选中一个或多个复选框时禁用删除按钮,则只需跟踪选中的复选框数量即可。该值大于或等于1,而不是禁用删除按钮。例如:

int i = 0;

final Button DeleteButton = (Button)findViewById(R.id.button1);
DeleteButton.setEnabled(false);
final CheckBox cb = (CheckBox)findViewById(R.id.checkBox);
OnCheckedChangeListener ch = new OnCheckedChangeListener(){ 

    @Override
    public void onCheckedChanged(CompoundButton cb, boolean DeleteButton) {
        if(cb.isChecked()){i++;} else{i--;}
        if(i >= 1){DeleteButton.setEnabled(true);} else{DeleteButton.setEnabled(false);}
    }
};
cb.setOnCheckedChangeListener(ch);
DeleteButton.setOnClickListener(new OnClickListener(){

...