android: как создать интерфейс между представлением recycler и clss адаптера

#android #android-recyclerview

#Android #android-recyclerview

Вопрос:

У меня recyclerview есть кнопка переключения для каждого элемента, и я хочу добавить switch.setOnCheckedChangeListener для элементов. как я могу создать интерфейс между классом адаптера и активностью хоста recyclerview??

Ответ №1:

Сначала вы создадите класс интерфейса

 public interface ExampleInterface {
    void udpateData(String data);
}
  

Интерфейс будет определен с именем и параметрами, которые вы хотите

Во-вторых, в activity или фрагменте, имеющем RecycleView, вам необходимо реализовать этот интерфейс.

В-третьих, при вызове вашего адаптера, пожалуйста, передайте это interface вашему адаптеру. Каждый раз, когда ваша кнопка переключения меняет статус, interface будет вызывать метод updateData для обновления данных

Удачи

Ответ №2:

В вашей активности хоста напишите метод для обработки изменения кнопки переключения, скажем

 private void switchButtonChanged()
  

передайте действие хоста при создании адаптера, например

Adapter adapter = new Adapter(getActivity())

под вашим onCheckedChangedListener () в адаптере запустите hostActivity.switchButtonChanged()

Ответ №3:

Есть простой способ сделать это. интерфейс.

 public class YourAdapter extends YourAdapterExtends {
private AdapterInteractionListener adapterInteractionListener;
... // your adapter codes
public YourAdapter(AdapterInteractionListener adapterInteractionListener){
this.adapterInteractionListener = adapterInteractionListener;
}

//call where you call switch.setOnCheckedChangeListener method
switch. setOnCheckedChangeListener{
adapterInteractionListener.onSwitched;
}


//here your interaction interface.

    public interface AdapterInteractionListener{
        void onSwitched();
    }
}
  

И ваша активность хоста

 public class YourActivity extends YourExtends impelements YourAdapter.AdapterInteractionListener {
...//your activity codes
@Override
onSwitched{
//here your switch listener triggered here
}

}
  

Надеюсь, это поможет.