Skip to content

Instantly share code, notes, and snippets.

@sergchil
Created December 23, 2017 22:55
Show Gist options
  • Save sergchil/39729275f250aa461c32d1335761b1bf to your computer and use it in GitHub Desktop.
Save sergchil/39729275f250aa461c32d1335761b1bf to your computer and use it in GitHub Desktop.
Recycler View Utils
/**
* A general RecyclerViewAdapter which supports OnItemClickListener and OnItemLongClickListener.
*
*/
public abstract class BaseRecyclerViewAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private RecyclerViewListener.OnItemClickListener itemClickListener;
private RecyclerViewListener.OnItemLongClickListener itemLongClickListener;
public void setOnItemClickListener(
@NonNull RecyclerViewListener.OnItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
public void setOnItemLongClickListener(
@NonNull RecyclerViewListener.OnItemLongClickListener itemLongClickListener) {
this.itemLongClickListener = itemLongClickListener;
}
/**
* Override onBindViewHolder to support OnItemClick and OnItemLongClick listener.
*/
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
if (itemClickListener != null) {
viewHolder.itemView.setOnClickListener(view -> itemClickListener.OnItemClick(view, i));
}
if (itemLongClickListener != null) {
viewHolder.itemView.setOnLongClickListener(view -> {
itemLongClickListener.OnItemLongClick(view, i);
return true;
});
}
}
}
public interface RecyclerViewListener {
@FunctionalInterface
interface OnItemClickListener {
void OnItemClick(View view, int position);
}
@FunctionalInterface
interface OnItemLongClickListener {
void OnItemLongClick(View view, int position);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment