Лучший способ реализовать функцию щелчка для каждого элемента в представлении реселлера - это инициализация onClickListener, когда представление заполняется внутри в окне просмотра рециркулятора. Затем в методе onClick используйте пользовательский интерфейс / прослушиватель, чтобы перехватить активность клика в родительском фрагменте / активности.
Например: создайте подобный пользовательский интерфейс;
public interface RecyclerviewOnClickListener{
void recyclerviewClick(int position);
}
Теперь реализуйте этот интерфейс в вашем родительском упражнении / фрагменте, содержащем обзор переработчика. Предположим, что ваш фрагмент называется ChatFragment. Тогда,
public class ChatFragment extends Fragment implements RecyclerviewOnClickListener{
.
.
}
Это будет реализовывать функцию onClick (int position) в вашем фрагменте. В конструкторе вашего адаптера вы должны создать поле для RecyclerviewOnClickListener. Предположим, что ваш адаптер называется ChatAdapter, тогда
Конструктор адаптера.
public ChatAdapter(RecyclerviewClickListener listener, .....<other params>){
this.listener = listener;
}
В своем фрагменте вы можете инициализировать свой адаптер следующим образом
ChatAdapter adapter = new ChatAdapter(this, <any additional params>);
Вы также должны передать тот же экземпляр 'listener' вашему зрителю и инициализировать слушателя там также
Теперь в вашем ViewSolder Viewview, вы можете установить view.setOnClickListener(new OnClickListener{
this.listener.recyclerviewClick(getAdapterPosition())
});
Функция getAdapterPosition()
возвращает позицию щелчка в обзоре реселлера, который получит обратный вызов в функции recyclerviewClick () вашего фрагмента.
Что касается количества параметров, которые вы передаете, вы можете использовать столько, сколько хотите, но для функции щелчка в обзоре переработчика идеальным способом является использование только одного параметра, который соответствует позиции. Теперь вы можете изменить содержимое списка, который вы передаете от своего фрагмента к адаптеру, и вызвать notifyDataSetChanged (), который обновит представление recycler. Надеюсь, это понятно.