package support.ui.adapters; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public abstract class EasyViewHolder<V> extends RecyclerView.ViewHolder implements View.OnLongClickListener, View.OnClickListener { private OnItemClickListener itemClickListener; private OnItemLongClickListener longClickListener; public EasyViewHolder(Context context, ViewGroup parent, int layoutId) { this(LayoutInflater.from(context).inflate(layoutId, parent, false)); bindListeners(); } public EasyViewHolder(View itemView) { super(itemView); bindListeners(); } void setItemClickListener(OnItemClickListener itemClickListener) { this.itemClickListener = itemClickListener; } void setLongClickListener(OnItemLongClickListener longClickListener) { this.longClickListener = longClickListener; } protected void bindListeners() { itemView.setOnClickListener(this); itemView.setOnLongClickListener(this); } protected void unbindListeners() { itemView.setOnClickListener(null); itemView.setOnLongClickListener(null); } @Override public boolean onLongClick(View v) { return longClickListener != null && longClickListener.onLongItemClicked(getAdapterPosition(), itemView); } @Override public void onClick(View v) { if (itemClickListener == null) return; itemClickListener.onItemClick(getAdapterPosition(), v); } public abstract void bindTo(int position, V value); public interface OnItemClickListener { void onItemClick(final int position, View view); } public interface OnItemLongClickListener { boolean onLongItemClicked(final int position, View view); } }