Всем привет, у меня есть NavigationDraweerActivity в которой выводиться Фрагмент с ViewPager, в котором я вывожу фрагмент с recycler view + card view. В адаптере для recyclerView у viewholder'а есть метод onClick, в самом адаптере реализован интерфейс OnItemClickListener с методом onItemClick. Также у адаптера есть метод SetOnItemClickListener, чтобы повесить обработчик на cardview.
class myViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private CardView cv;
private ImageView commandImageView;
private TextView commandTextView;
public myViewHolder(View itemView) {
super(itemView);
cv = itemView.findViewById(R.id.cv);
commandImageView = itemView.findViewById(R.id.commandImageView);
commandTextView = itemView.findViewById(R.id.commandTextView);
cv.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (mItemClickListener != null) {
mItemClickListener.onItemClick(v, getAdapterPosition());
}
}
}
public interface OnItemClickListener {
public void onItemClick(View view , int position);
}
public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) {
this.mItemClickListener = mItemClickListener;
}
В коде, когда я создаю recyclerVIew и адаптер для него, я реализую метод onClick
recyclerView = view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recViewAdapter = new RecViewAdapter(get_data(), getContext());
recyclerView.setAdapter(recViewAdapter);
recViewAdapter.SetOnItemClickListener(new RecViewAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
//Мое действие
}
});
Но из-за особенности view pager (он создает текущую страницу и следующую) при создании следующей страницы переопределяется обработчик для текущей страницы. Как я понял, это потому что элементы PageVIew ссылаются на один и тот же recycler view. Как это можно исправить?