1. 程式人生 > >給recyclerAdapter打造通用點選事件監聽設定BaseRecyclerAdapter

給recyclerAdapter打造通用點選事件監聽設定BaseRecyclerAdapter

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);
                    }
                });
            }
        }
    }
}