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

Android 如何在选中一个或多个复选框后启用按钮?,android,button,if-statement,checkbox,Android,Button,If Statement,Checkbox,我有一个问题,如果我有一个复选框列表,但我不知道有多少,因为它们是由用户生成的。当至少选中一个或多个复选框时,如何禁用/启用删除按钮? 到目前为止我有这个代码 我是编程新手,请具体点 先谢谢你 @Override public void onCheckedChanged(CompoundButton cb, boolean DeleteButton) { if(cb.isChecked()){ DeleteButton.setEnabled

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

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

如果您只想知道是否选中了一个或多个
复选框
,则创建一个
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(您至少选中了一个
复选框
),则禁用/启用按钮的方法如下

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

但我认为您对
onCheckChanged()的第二个
param
感到困惑
。它表示是否选中了
按钮,而不是
按钮是什么。

您可以管理选中项目的列表,每当选中状态更改时,检查列表是否为空或是否有某些项目,然后相应地处理启用或禁用按钮的操作

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

        }
    });

如果我误解了您的问题,请告诉我,但如果您的意思是要在选中一个或多个复选框时禁用“删除”按钮,您可以简单地跟踪选中的框的数量。该值大于或等于一,而不是禁用“删除”按钮。例如:

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(){

我想计算的是复选框,默认情况下,删除按钮应该被禁用,当一个或多个cb被选中时,它应该被启用。我现在就开始,我会尽快给你回复,谢谢你能不能请你向我解释一下带有“cb.setOnCheckedChangeListener(ch)”的部分;DeleteButton.setOnClickListener(新的OnClickListener(){“”,以及您认为它有什么问题,我不确定您想知道什么。我看不出它有什么问题,因为我厌倦了运行代码,出现了两个错误,1-无法对基元类型boolean调用isEnabled(),第二个错误“此行有多个标记-未定义参数类型对象的运算符+,int”“我认为应该可以,请更正我的错误,如果删除按钮被禁用,那么当复选框(一个或多个)被选中时,它将被禁用?但是这部分怎么办”“DeleteButton.setOnClickListener(new OnClickListener()””正确,删除按钮最初将被禁用。对于选中的每个复选框,“i”将增加1。如果随后未选中复选框,“i”将减少1。最后一部分,“DeleteButton.setOnClickListener(new OnClickListener()”是从您的原始问题复制的,但当单击DeleteButton时,应该是您想要的任何内容。