[ОБНОВЛЕНИЕ] Тумблеры на основе главного переключателя - PullRequest
0 голосов
/ 26 октября 2018

Моя активность содержит RecyclerView.Adapter, и каждая ячейка этого адаптера содержит переключатель.В моей деятельности у меня есть главный переключатель, который будет контролировать поведение этих переключателей в моем адаптере.

Мой главный переключатель:

switchAllBureau.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean b) {
                //code to control adapter switches
            }
        });

Код адаптера:

public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
        final String nameBureau = bureaus.get(position).getName();

        holder.txtNameBureau.setText(nameBureau);
        holder.switchBureau.setChecked(interactor.isBureauSubscribed(bureaus.get(position).getCode()));
        holder.switchBureau.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean b) {
                if(b){
                    //do something
                } else {
                    //do something
                }
            }
        });
    }

Код ViewHolder:

class MyViewHolder extends RecyclerView.ViewHolder {
    private TextView txtNameBureau;
    private ToggleButton switchBureau;

    MyViewHolder(View view) {
        super(view);
        txtNameBureau = view.findViewById(R.id.txt_name_bureau);
        switchBureau = view.findViewById(R.id.switch_bureau);
    }
}

Как изменить переключатели адаптера на основе главного переключателя?

ОБНОВЛЕНИЕ: добавление частного интерфейса и реализация при создании держателя вида работает.Но обновляется только самое последнее:

private interface ChangeSwitch{
    void change(boolean select);
}

MyViewHolder(View view) {
            super(view);
            txtNameBureau = view.findViewById(R.id.txt_name_bureau);
            switchBureau = view.findViewById(R.id.switch_bureau);
            changeSwitch = new ChangeSwitch() {
                @Override
                public void change(boolean select) {
                    switchBureau.setChecked(select);
                }
            };
        }

И я называю это в моем главном переключателе из действия:

public void selectAllBureaus(boolean selectAll){
        changeSwitch.change(selectAll);
    }
...