code: @Override public final VH onCreateViewHolder(ViewGroup parent, int viewType) {
      VH viewHolder;
      if (isHeaderType(viewType)) {
        viewHolder = onCreateHeaderViewHolder(parent, viewType);
      } else if (isFooterType(viewType)) {
        viewHolder = onCreateFooterViewHolder(parent, viewType);
      } else {
        viewHolder = onCreateItemViewHolder(parent, viewType);
      }
      return viewHolder;
    }
docs: Invokes onCreateHeaderViewHolder, onCreateItemViewHolder or onCreateFooterViewHolder methods
  based on the view type param.