Android回收站视图onItemClick识别适配器

时间:2020-07-10 12:10:25

标签: android android-studio android-recyclerview onclicklistener

我有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>

enter image description here

1 个答案:

答案 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();
}
相关问题