У меня есть 3 разных адаптера для 1 представления Recycler, и я реализовал прослушиватель OnClick всех 3 в моем классе:
public class PokemonMovesDialogFragment extends DialogFragment
implements LearnsetRecyclerAdapter.ItemClickListener,
TecnicalHiddenMachineRecyclerAdapter.ItemClickListener,
EggmoveRecyclerAdapter.ItemClickListener {
private LearnsetRecyclerAdapter learnsetRecyclerAdapter;
private TecnicalHiddenMachineRecyclerAdapter tecnicalHiddenMachineRecyclerAdapter;
private EggmoveRecyclerAdapter eggmoveRecyclerAdapter;
@Override
public void onItemClick(View view, int position) {
//HERE I NEED TO IDENTIFY WHICH ADAPTER I'VE SUMMONED
}
}
public void setAdaptersListeners(){
//Here I instance the adapters and i set the listener...
}
Мои 3 адаптера реализовали это:
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
......
ViewHolder(View view) {
super(view);
......
view.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (mClickListener != null) {
mClickListener.onItemClick(view, getAdapterPosition());
}
}
}
// convenience method for getting data at click position
public Move getItem(int id) {
return learnsetMoves.get(id);
}
// allows clicks events to be caught
public void setClickListener(ItemClickListener itemClickListener) {
this.mClickListener = itemClickListener;
}
// parent activity will implement this method to respond to click events
public interface ItemClickListener {
void onItemClick(View view, int position);
}
Я тестировал его и его работу, с отладчиком я могу видеть, какая позиция и представление вызываются при нажатии, однако я не знаю, КАКИЕ адаптеры были вызваны, я получаю только представление и позицию:
введите описание изображения здесь