我有3个不同的适配器用于1个“回收站”视图,并且在我的课程中实现了所有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...
}
我的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);
}
我已经测试了它的工作原理,并且使用调试器可以看到单击时召唤的位置和视图,但是我不知道调用了WHICH适配器,我只能得到视图和位置:< / p>
答案 0 :(得分:0)
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();
}