Your Adapter is responsible to populate view so it has all views of your RecyclerView while your ListofVideos (may) have only video links.
Whenever you scroll your RecyclerView, Adapter is responsible to inflate views.
What you should do?
Create an interface
public interface BaseItem {
    int ITEM_TYPE_HEADER = 0;
    int ITEM_TYPE_SUB_HEADER = 1;
    int ITEM_TYPE_ROW_NORMAL = 2;
    int getItemType();
}
And implement this interface with your adapter's video item like
public class YourAdapterVideoItem implements BaseItem {
  
   // rest of your code
   @Override
   public int getItemType() {
       return ITEM_TYPE_ROW_NORMAL;
   }
}
Create your adapter's header item
public class YourAdapterHeaderItem  implements BaseItem {
    // rest of your code
    @Override
    public int getItemType() {
        return ITEM_TYPE_HEADER;
    }
}
Update your adapter with
public class YourAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
   private List<BaseItem> items = new ArrayList<BaseItem>();
   
   @Override
    public BaseRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        BaseRecyclerViewHolder holder;
        switch (viewType) {
            case BaseItem.ITEM_TYPE_ROW_NORMAL:
            default:
                // inflate your default items
                break;
            case BaseItem.ITEM_TYPE_HEADER:
                // inflate your default items
                break;
        }
        return holder;
    }
    
    @Override
    public void onBindViewHolder(BaseRecyclerViewHolder viewHolder, int position) {
        BaseItem base = getItemAt(position);
        switch (base.getItemType()) {
            case BaseItem.ITEM_TYPE_HEADER:
                // populate your header view
                break;
            case BaseItem.ITEM_TYPE_ROW_NORMAL:
                // populate your actual view
                break;
        }
    }
    
    @Override
    public int getItemCount() {
        return items == null ? 0 : items.size();
    }
   @Override
    public int getItemViewType(int position) {
        return getItemAt(position).getItemType();
    }
    
    public BaseItem getItemAt(int position) {
        return items == null ? null : items.get(position);
    }
}
When you want to add header use YourAdapterHeaderItem for your videos use YourAdapterVideoItem.
Hope this helps
Edit
For adding headers in GridLayoutManager have a look at RecyclerView GridLayoutManager with full width header