You cannot do this because the YoutubePlayer too large to be added to recyclerview. Use YouTubeThumbnailView instead to display thumbnails. When the user clicks on one of them, you can run the YouTubePlayerFragment or action with the YouTubeplayerView .
In your case, it will look like
public class MyRecyclerViewAdapter extends Adapter<MyRecyclerViewAdapter .DataObjectHolder> { private static String LOG_TAG = "MyRecyclerViewAdapter"; private ArrayList<DataObject> mDataset; private static MyClickListener myClickListener; private static final int RECOVERY_DIALOG_REQUEST = 10; public static String key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; Context ctx; View view; public static class DataObjectHolder extends ViewHolder implements View .OnClickListener { YouTubeThumbnailView youTubeThumbnailView ; public DataObjectHolder(View itemView) { super(itemView); youTubeThumbnailView = (YouTubeThumbnailView ) itemView.findViewById(R.id.yourId); itemView.setOnClickListener(this); } @Override public void onClick(View v) { myClickListener.onItemClick(getAdapterPosition(), v); } } public void setOnItemClickListener(MyClickListener myClickListener) { this.myClickListener = myClickListener; } public MyRecyclerViewAdapter(Context context,ArrayList<DataObject> myDataset) { mDataset = myDataset; ctx=context; } @Override public DataObjectHolder onCreateViewHolder(ViewGroup parent, int viewType) { view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.playerview_demo, parent, false); DataObjectHolder dataObjectHolder = new DataObjectHolder(view); return dataObjectHolder; } @Override public void onBindViewHolder(DataObjectHolder holder, final int position) { holder.youTubeThumbnailView.initialize(key, new YouTubePlayer.OnInitializedListener() { @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean b) { } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) { if (errorReason.isUserRecoverableError()) { errorReason.getErrorDialog((Activity) ctx, RECOVERY_DIALOG_REQUEST).show(); } else { String errorMessage = String.format("YouTube Error (%1$s)", errorReason.toString()); Toast.makeText(ctx, errorMessage, Toast.LENGTH_LONG).show(); } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RECOVERY_DIALOG_REQUEST) {
Edit Thank you Irfan Raza for this. See this answer, it seems that it can do
source share