@NonNull public VH createViewHolder(@NonNull View itemView) { return (VH) new ViewHolder(itemView); }
@Override public void onClick(@NonNull View v) { // Discard click if the viewholder has been removed, but was still in the process of // animating its removal while clicked (unlikely, but technically possible) if (onItemClickListener != null && getAdapterPosition() != RecyclerView.NO_POSITION) { onItemClickListener.onItemClick(getItem(), v); } } };
@Override public int getDragDirs(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { return ((ViewHolder) viewHolder).getDragDirs(); } }
public @NonNull Item getItem(@NonNull VH holder) { return holder.getItem(); }
@Override public int getSwipeDirs(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { return ((ViewHolder) viewHolder).getSwipeDirs(); }
/** * Do any cleanup required for the viewholder to be reused. * * @param viewHolder The ViewHolder being recycled */ @CallSuper public void unbind(@NonNull VH viewHolder) { viewHolder.unbind(); }
public abstract void bind(@NonNull VH viewHolder, int position);
@Override public boolean onFailedToRecycleView(@NonNull VH holder) { Item contentItem = holder.getItem(); return contentItem.isRecyclable(); }
@Override public boolean onLongClick(@NonNull View v) { // Discard long click if the viewholder has been removed, but was still in the process of // animating its removal while long clicked (unlikely, but technically possible) if (onItemLongClickListener != null && getAdapterPosition() != RecyclerView.NO_POSITION) { return onItemLongClickListener.onItemLongClick(getItem(), v); } return false; } };
@Override public void onViewRecycled(@NonNull VH holder) { Item contentItem = holder.getItem(); contentItem.unbind(holder); }