Reputation: 140
I want functionality in my project where on a click of select all checkbox all the checkbox in the list must get selected and on deselect of checkbox all the other checkbox must get deselected. I have achieved this functionality by doing this:
/*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();
}
});
}
and in adapter class I have done this..
holder.cbSelect.setChecked(dataList.get(position).isSelected());
Now my problem is whenever I will unchecked any checkbox in the list the select all button must get unchecked. Please help
thanks in advance
Upvotes: 1
Views: 285
Reputation: 12469
You can set OnCheckedChangeListener
on holder.cbSelect.
in your adapter.
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
}
});
}
You can have listener
to get notified in your Activity.
For adding listener,
1. Create an interface
:
public interface OnMyCheckBoxCheckedChangeListener {
void onMyCheckBoxCheckedChange();
}
2. Add parameter in your constructor of Adapter:
private OnMyCheckBoxCheckedChangeListener mOnMyCheckBoxCheckedChangeListener;
public YourAdapter(..., ..., OnMyCheckBoxCheckedChangeListener onMyCheckBoxCheckedChangeListener) {
mOnMyCheckBoxCheckedChangeListener = onMyCheckBoxCheckedChangeListener;
}
3. Call interface where you want to notify:
holder.cbSelect.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
dataList.get(holder.getAdapterPosition()).setSelected(isChecked);
mOnMyCheckBoxCheckedChangeListener.onMyCheckBoxCheckedChange();
}
});
}
4. Set adapter from your activity:
yourRecyclerView.setAdapter(new YourAdapter(..., ..., new OnMyCheckBoxCheckedChangeListener() {
@Override
public void onMyCheckBoxCheckedChange() {
// you will get notified here.
}
}));
Upvotes: 1