取消选中所有复选框后禁用按钮

时间:2017-11-02 09:14:29

标签: java android checkbox android-recyclerview

我在multiple checkbox中有recycler view adapterparent 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);
    }
}

根据我的代码,我可以启用按钮,当我点击一个复选框,但禁用功能不能正常工作,如果我取消选中单个复选框也按钮将禁用,我想禁用按钮后所有复选框仅取消选中

2 个答案:

答案 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)

在函数中检查是否使用循环检查了任何复选框。如果选中任何人,请设置标记。使用此标志可启用或禁用该按钮。

参考文献: