[英]Android recycler view onItemClick identify the adapter
I have 3 different adapters for 1 Recycler view and I've implemented the OnClick Listener of all 3 in my class:我有 3 个不同的适配器用于 1 个回收器视图,并且我在 class 中实现了所有 3 个的 OnClick 侦听器:
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...
}
My 3 Adapters have this implemented:我的 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);
}
I've tested it and its working, with the debugger I can see which position and the view is summonned in on click, however I don't know WHICH adapters was called, I only get the view and the position:我已经对其进行了测试及其工作,使用调试器我可以看到哪个 position 并在单击时调用视图,但是我不知道调用了哪个适配器,我只得到视图和 position:
public enum AdapterType {
First,
Second,
Third
}
@Override
public void onClick(View view) {
if (mClickListener != null) {
view.setTag(AdapterType.First);
mClickListener.onItemClick(view, getAdapterPosition());
}
}
@Override
public void onItemClick(View view, int position) {
//HERE I NEED TO IDENTIFY WHICH ADAPTER I'VE SUMMONED
AdapterType adapterType = (AdapterType) view.getTag();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.