简体   繁体   中英

How to deselect the select all checkbox when i am deselecting even 1 checkbox in android

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM