java - 当我在 android 中取消选择甚至 1 个复选框时如何取消选择全选复选框

标签 java android listview checkbox

我想在我的项目中使用以下功能:单击全选复选框时,必须选中列表中的所有复选框,取消选中复选框时,必须取消选中所有其他复选框。我通过这样做实现了这个功能:

/*in my main activity i have done this*/

  cbSelectAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                for (int i = 0; i < resumeSearchList.size(); i++) {
                    resumeSearchList.get(i).setSelected(cbSelectAll.isChecked());
                }
                cvSearchResultListAdapter.notifyDataSetChanged();
            }
        });
    }

在适配器类中我已经这样做了..

holder.cbSelect.setChecked(dataList.get(position).isSelected());

现在我的问题是每当我取消选中列表中的任何复选框时,必须取消选中全选按钮。请帮忙

提前致谢

最佳答案

您可以在适配器中的 holder.cbSelect. 上设置 OnCheckedChangeListener

holder.cbSelect.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    dataList.get(holder.getAdapterPosition()).setSelected(isChecked);
                    // here you can call listener to get notified 
            }
        });
    }

您可以让监听器在您的Activity 中得到通知。

用于添加监听器,

<强>1。创建一个接口(interface):

public interface OnMyCheckBoxCheckedChangeListener {
    void onMyCheckBoxCheckedChange();
}

<强>2。在 Adapter 的构造函数中添加参数:

private OnMyCheckBoxCheckedChangeListener mOnMyCheckBoxCheckedChangeListener;

    public YourAdapter(..., ..., OnMyCheckBoxCheckedChangeListener onMyCheckBoxCheckedChangeListener) {
            mOnMyCheckBoxCheckedChangeListener = onMyCheckBoxCheckedChangeListener;
        }

<强>3。调用要通知的接口(interface):

holder.cbSelect.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    dataList.get(holder.getAdapterPosition()).setSelected(isChecked);
                    mOnMyCheckBoxCheckedChangeListener.onMyCheckBoxCheckedChange(); 
            }
        });
    }

<强>4。从您的 Activity 中设置适配器:

yourRecyclerView.setAdapter(new YourAdapter(..., ..., new OnMyCheckBoxCheckedChangeListener() {
    @Override
    public void onMyCheckBoxCheckedChange() {
        // you will get notified here.
    }
}));

关于java - 当我在 android 中取消选择甚至 1 个复选框时如何取消选择全选复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53313370/

相关文章:

java - gson TypeToken 类NotFoundException

java - 如何在 ActionListener 中拥有两个相关的操作?

java - Java 8+ 如何将方法引用推断为消费者?

Java Runtime.getRuntime().exec() 带有简单的引号

android - admob 内存使用率高

java - Android Intent - 传递数据

android - Listview 的页脚 View 未显示在一台设备上,而是显示在另一台设备上?

android - 如果我将 AsyncTask 移动到其他文件,它会更快吗?

java - requestLocationUpdates 在错误的时间生成位置

android - 如何在 android ListView 中删除页脚的底部分隔线