Как снять флажок выбрать все, когда я отменяю даже 1 флажок в Android - PullRequest
0 голосов
/ 15 ноября 2018

Мне нужна функциональность в моем проекте, где при нажатии кнопки «Выбрать все» все флажки в списке должны быть выбраны, а при снятии флажка все остальные флажки должны быть сняты.Я достиг этой функциональности, выполнив это:

/*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());

Теперь моя проблема заключается в том, чтобы каждый раз, когда я сниму флажок в спискекнопка выбора всех должна быть отключена.Пожалуйста, помогите

заранее спасибо

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете установить 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.
    }
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...