0

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

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

3 回答 3

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是什么。

于 2013-11-10T16:13:01.203 回答
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); 

        }
    });
于 2013-11-10T16:16:18.927 回答
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(){

...

于 2013-11-10T16:16:21.447 回答