【问题标题】:Android recycler view onItemClick identify the adapterAndroid recycler view onItemClick 识别适配器
【发布时间】:2020-10-31 04:18:40
【问题描述】:

我有 3 个不同的适配器用于 1 个 Recycler 视图,并且我已经在我的班级中实现了所有 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);
}

我已经对其进行了测试及其工作,使用调试器我可以看到单击时调用了哪个位置和视图,但是我不知道调用了哪些适配器,我只得到了视图和位置:

【问题讨论】:

    标签: android android-studio android-recyclerview onclicklistener


    【解决方案1】:
    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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      相关资源
      最近更新 更多