給recyclerAdapter打造通用點選事件監聽設定BaseRecyclerAdapter
阿新 • • 發佈:2018-12-11
public abstract class BaseRecyclerAdapter<VH extends BaseRecyclerViewHolder> extends RecyclerView.Adapter<BaseRecyclerViewHolder> { private final String TAG = BaseRecyclerAdapter.class.getSimpleName(); private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } // 在onBindViewHolder中呼叫 protected <VH extends BaseRecyclerViewHolder> void bindOnItemClickListener(VH holder, final int position) { if (onItemClickListener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.OnItemClick(position, v); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { return onItemClickListener.OnItemLongClick(position, v); } }); } } /** * 設定監聽 * @param holder * @param position * @param longClick 是否繫結長按監聽 * @param <VH> */ protected <VH extends BaseRecyclerViewHolder> void bindOnItemClickListener(VH holder, final int position, boolean longClick) { if (onItemClickListener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.OnItemClick(position, v); } }); if (longClick) { holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { return onItemClickListener.OnItemLongClick(position, v); } }); } } } }