Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 取消选中所有复选框后禁用按钮_Java_Android_Checkbox_Android Recyclerview - Fatal编程技术网

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

Java 取消选中所有复选框后禁用按钮,java,android,checkbox,android-recyclerview,Java,Android,Checkbox,Android Recyclerview,我在回收器视图适配器中有多个复选框。在父视图中有一个按钮。如果选中任何复选框,我想启用该按钮;如果所有复选框都未选中,我想禁用该按钮。我该怎么做 Holder.checboxone.setOnCheckedChangeListener(new CompButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompButton compButton,

我在
回收器视图适配器中有
多个复选框
。在
父视图中有一个按钮
。如果选中任何复选框,我想启用该按钮;如果所有复选框都未选中,我想禁用该按钮。我该怎么做

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

根据我的代码,我可以在单击ay复选框时启用按钮,但禁用功能无法正常工作,如果我未选中单个复选框,按钮也将禁用,我想禁用按钮,在所有复选框后仅取消选中功能中的复选框检查是否使用循环选中任何复选框。如果选中任何人,则设置标志。使用此标志启用或禁用按钮

参考资料:

    • 内部活动(实现
      MyInterface

      接口~~

      public interface MyInterface {
          void checkboxListener(boolean isSelected);
      }
      
      从复选框内调用此接口;在适配器内部

      更新

      在适配器内部:

      更改此方法

      private void checkboxStatus(boolean isChecked) {
          myInterface.checkboxListener(isChecked);
      }
      
      您可能也在为适配器使用构造函数,请将其更改为:

      public void MyAdapter(Context c, Data d, MyInterface myInterface){
          ...
          this.myInterface = myInterface;
      }
      
      内部活动:

      公共类MyActivity扩展活动实现MyInterface{…

      初始化适配器时,请执行以下操作:

      MyAdapter myAdapter = new MyAdapter(this /* context */, data /* whatever is your data */, this);
      

      在你的活动中添加第一块(我的答案)中的代码,你就可以开始了!!!

      发布你的listview适配器类谢谢你。你可以编辑我的代码吗。我没有得到你的界面部分。这是一个O(n)复杂度的运行,每次用户甚至触摸一个复选框都可以:/
      MyAdapter myAdapter = new MyAdapter(this /* context */, data /* whatever is your data */, this);