我有一个问题,如果我有一个复选框列表,但我不知道有多少,因为它们是由用户生成的,如何在至少一个或多个复选框时禁用/启用删除按钮检查? 到目前为止我有这个代码 我是编程的新手,请具体请 提前谢谢。
@Override
public void onCheckedChanged(CompoundButton cb, boolean DeleteButton) {
if(cb.isChecked()){
DeleteButton.setEnabled(true);
}
else if(DeleteButton.isEnabled()){
DeleteButton.setEnabled(false);
答案 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(){
...