我在multiple checkbox
中有recycler view adapter
。parent view
中有一个按钮。如果选中任何复选框,我想启用按钮;如果所有复选框都未选中,我想要disable
按钮。我能做到吗,
Holder.checboxone.setOnCheckedChangeListener(new
CompButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompButton compButton,
boolean b) {
item.setChecked(b);
checkboxStatus(b);
}
});
private void checkboxStatus(boolean isChecked) {
if (isChecked) {
((MainActivity)context).getButton().setEnabled(true);
} else {
((MainActivity)context).getButton().setEnabled(false);
}
}
根据我的代码,我可以启用按钮,当我点击一个复选框,但禁用功能不能正常工作,如果我取消选中单个复选框也按钮将禁用,我想禁用按钮后所有复选框仅取消选中
答案 0 :(得分:2)
内部活动(实施MyInterface
)
int selectedCount = 0; // Global variable
@Override
public void checkboxListener(boolean isSelected){
if (isSelected)
selectedCount++;
else
selectedCount--;
if (selectedCount > 0)
button.setEnabled(true);
else
button.setEnabled(false);
}
接口~~ !!
public interface MyInterface {
void checkboxListener(boolean isSelected);
}
从Checkbox.onCheckedChangeListener()中调用此接口;在适配器内部。
<强>更新强>
适配器内部:
更改此方法。
private void checkboxStatus(boolean isChecked) {
myInterface.checkboxListener(isChecked);
}
您可能也在为适配器使用构造函数,将其更改为:
public void MyAdapter(Context c, Data d, MyInterface myInterface){
...
this.myInterface = myInterface;
}
内部活动:
public class MyActivity extends Activity implements MyInterface { ...
当您初始化适配器时,请执行以下操作:
MyAdapter myAdapter = new MyAdapter(this /* context */, data /* whatever is your data */, this);
在您的活动中添加第一个(我的答案)块中的代码,您可以开始使用!!!
答案 1 :(得分:-1)
在函数中检查是否使用循环检查了任何复选框。如果选中任何人,请设置标记。使用此标志可启用或禁用该按钮。
参考文献: