Как правильно использовать OnSharedPreferenceChangeListener в адаптере RecyclerView - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть адаптер. у него есть флажки, которые в случае изменения данных изменяют их состояние. Для этого я регистрируюсь на SharedchangeListener. Работает нормально. Но остается одна проблема. Если фрагмент / активность на Destroyed, мне нужно отменить регистрацию этого слушателя от адаптера (или это необязательно в случае с адаптером?), Как правильно решить эту проблему?

  public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {

       private SharedPreferences sp;

      public CustomAdapter(List<Model> list) {
              this.list = list;
              sp = SharedPref.getSp();
      }

      class ViewHolder extends RecyclerView.ViewHolder 
                       implements SharedPreferences.OnSharedPreferenceChangeListener {

         ViewHolder(View view) {
                  super(view);
                 //...views

                 sp.registerOnSharedPreferenceChangeListener(this);
            }

          private void bind(int position) {

              //...logic
          }

          @Override
          public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

           //...update view

          }
      }

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    holder.bind(position);
}


//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...