0

I am building an android application where I am trying to play youtuble video in youtubeView using RecyclerAdapter.

The current issue is: audio is coming and that too of last video but no video is displaying.

Below is my adapter class code:

package com.recycler.youtube;
public class RecyclerAdapter extends      
RecyclerView.Adapter<RecyclerAdapter.VideoInfoHolder> {

//these ids are the unique id for each video
String[] VideoID = {"P3mAtvs5Elc", "nCgQDjiotG0", "P3mAtvs5Elc"};
Context ctx;
public  static  String key="AIzaSyD2XJ_kIpxiwIMxY_wlrjGXBl0AAG1DfjA";

public RecyclerAdapter(Context context) {
    this.ctx = context;
}

@Override
public VideoInfoHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.video_item, parent, false);
    return new VideoInfoHolder(itemView);
}

@Override
public void onBindViewHolder(final VideoInfoHolder holder, final int position) {


    final YouTubeThumbnailLoader.OnThumbnailLoadedListener  onThumbnailLoadedListener = new YouTubeThumbnailLoader.OnThumbnailLoadedListener(){
        @Override
        public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) {

        }

        @Override
        public void onThumbnailLoaded(YouTubeThumbnailView youTubeThumbnailView, String s) {
            youTubeThumbnailView.setVisibility(View.VISIBLE);
            holder.relativeLayoutOverYouTubeThumbnailView.setVisibility(View.VISIBLE);
        }
    };

    holder.youTubeThumbnailView.initialize(key, new YouTubeThumbnailView.OnInitializedListener() {
        @Override
        public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader youTubeThumbnailLoader) {
            youTubeThumbnailLoader.setVideo(VideoID[position]);
            youTubeThumbnailLoader.setOnThumbnailLoadedListener(onThumbnailLoadedListener);

        }

        @Override
        public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) {
            //write something for failure
        }
    });
}

@Override
public int getItemCount() {
    return VideoID.length;
}

public class VideoInfoHolder extends RecyclerView.ViewHolder implements
         View.OnClickListener, YouTubePlayer.OnInitializedListener {

    protected RelativeLayout relativeLayoutOverYouTubeThumbnailView;
    YouTubeThumbnailView youTubeThumbnailView;
    protected ImageView playButton;
    YouTubePlayerView youtube_view;

    public VideoInfoHolder(View itemView) {
        super(itemView);
        playButton=(ImageView)itemView.findViewById(R.id.btnYoutube_player);
        playButton.setOnClickListener(this);
        youtube_view = (YouTubePlayerView) itemView.findViewById(R.id.youtube_view);
        // Initializing video player with developer key
        youtube_view.initialize(key, this);
        relativeLayoutOverYouTubeThumbnailView = (RelativeLayout) itemView.findViewById(R.id.relativeLayout_over_youtube_thumbnail);
        youTubeThumbnailView = (YouTubeThumbnailView) itemView.findViewById(R.id.youtube_thumbnail);
    }

    @Override
    public void onClick(View v) {
        Intent intent = YouTubeStandalonePlayer.createVideoIntent((Activity) ctx,
                key,
                VideoID[getLayoutPosition()],//video id
                100,     //after this time, video will start automatically
                true,               //autoplay or not
                false);             //lightbox mode or not; show the video in a small box
        ctx.startActivity(intent);

        Toast.makeText(ctx, "", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
        if (!b) {
            // loadVideo() will auto play video
            // Use cueVideo() method, if you don't want to play it automatically
            youTubePlayer.loadVideo(VideoID[getLayoutPosition()]);
            youTubePlayer.play();
            // Hiding player controls
            youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.CHROMELESS);
        }
    }

    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
        if (youTubeInitializationResult.isUserRecoverableError()) {
        } else {
            String errorMessage = String.format("", youTubeInitializationResult.toString());
            Toast.makeText(ctx, errorMessage, Toast.LENGTH_LONG).show();
        }
    }
  }

  }

Below is my activity class:

setContentView(R.layout.recycler_main);
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.listRecyclerView);
    recyclerView.setHasFixedSize(true);
    //to use RecycleView, you need a layout manager. default is LinearLayoutManager
    LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(linearLayoutManager);
    RecyclerAdapter adapter=new RecyclerAdapter(HiteshYoutubleVideoActivity.this);
    recyclerView.setAdapter(adapter);
sofquestion 9
  • 167
  • 4
  • 12
  • Have you tried reading this blog? https://androidtutorialmagic.wordpress.com/my-mini-project/multiple-youtube-video-in-recyclerviewlistview-in-android/ – Android Enthusiast Apr 12 '16 at 06:03
  • @d.datul1990 yes I try that but it play vide on next page I need same there in place of thumbnail – sofquestion 9 Apr 12 '16 at 06:05
  • I not sure if this is applicable to your issue, have check this http://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api?rq=1 – Android Enthusiast Apr 12 '16 at 06:14

0 Answers0