java - 当我在android中取消选择1个复选框时如何取消选择全选复选框
问题描述
我想要在我的项目中单击全选复选框的功能,必须选中列表中的所有复选框,并且在取消选中复选框时,必须取消选中所有其他复选框。我通过这样做实现了这个功能:
/*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());
现在我的问题是,每当我取消选中列表中的任何复选框时,都必须取消选中全选按钮。请帮忙
提前致谢
解决方案
您可以OnCheckedChangeListener
在holder.cbSelect.
适配器中设置。
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
}
});
}
您可能必须listener
在您的Activity.
要添加侦听器,
1. 创建一个interface
:
public interface OnMyCheckBoxCheckedChangeListener {
void onMyCheckBoxCheckedChange();
}
2. 在适配器的构造函数中添加参数:
private OnMyCheckBoxCheckedChangeListener mOnMyCheckBoxCheckedChangeListener;
public YourAdapter(..., ..., OnMyCheckBoxCheckedChangeListener onMyCheckBoxCheckedChangeListener) {
mOnMyCheckBoxCheckedChangeListener = onMyCheckBoxCheckedChangeListener;
}
3.调用要通知的接口:
holder.cbSelect.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
dataList.get(holder.getAdapterPosition()).setSelected(isChecked);
mOnMyCheckBoxCheckedChangeListener.onMyCheckBoxCheckedChange();
}
});
}
4. 从您的活动中设置适配器:
yourRecyclerView.setAdapter(new YourAdapter(..., ..., new OnMyCheckBoxCheckedChangeListener() {
@Override
public void onMyCheckBoxCheckedChange() {
// you will get notified here.
}
}));