Search code examples
androidlistviewyoutubeplaylist

Youtube Playlist to Listview in Android Studio


I implemented the Youtube lib in my Project, and i want to do an Listview which shows the videos in the playlist.

I found this: Parsing Youtube playlist to Listview

and this: Integrating youtube playlists in android

but nothing helped me there. Thanks


Solution

  • public class MainActivity extends AppCompatActivity implements YouTubeThumbnailView.OnInitializedListener, YouTubeThumbnailLoader.OnThumbnailLoadedListener, YouTubePlayer.OnInitializedListener {
    
    
        YouTubePlayerFragment playerFragment;
        YouTubePlayer Player;
        YouTubeThumbnailView thumbnailView;
        YouTubeThumbnailLoader thumbnailLoader;
        RecyclerView VideoList;
        RecyclerView.Adapter adapter;
        List<Drawable> thumbnailViews;
        List<String> VideoId;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            thumbnailViews = new ArrayList<>();
            VideoList = (RecyclerView) findViewById(R.id.VideoList);
            RecyclerView.LayoutManager layoutManager=new LinearLayoutManager(this);
            VideoList.setLayoutManager(layoutManager);
            adapter=new VideoListAdapter();
            VideoList.setAdapter(adapter);
            VideoId = new ArrayList<>();
            thumbnailView = new YouTubeThumbnailView(this);
            thumbnailView.initialize("API KEY", this);
            playerFragment = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.VideoFragment);
            playerFragment.initialize("API KEY", this);
        }
    
    
        @Override
        public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader youTubeThumbnailLoader) {
            thumbnailLoader = youTubeThumbnailLoader;
            youTubeThumbnailLoader.setOnThumbnailLoadedListener(MainActivity.this);
            thumbnailLoader.setPlaylist("PLAYLIST ID");
        }
    
        @Override
        public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) {
    
        }
    
    
        public void add() {
            adapter.notifyDataSetChanged();
            if (thumbnailLoader.hasNext())
                thumbnailLoader.next();
        }
    
        @Override
        public void onThumbnailLoaded(YouTubeThumbnailView youTubeThumbnailView, String s) {
            thumbnailViews.add(youTubeThumbnailView.getDrawable());
            VideoId.add(s);
            add();
        }
    
        @Override
        public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) {
    
        }
    
        @Override
        public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
            Player=youTubePlayer;
            Player.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() {
                @Override
                public void onFullscreen(boolean b) {
                    VideoList.setVisibility(b?View.GONE:View.VISIBLE);
                }
            });
        }
    
        @Override
        public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
    
        }
    
        public class VideoListAdapter extends RecyclerView.Adapter<VideoListAdapter.MyView>{
    
        public class MyView extends RecyclerView.ViewHolder{
    
            ImageView imageView;
            public MyView(View itemView) {
                super(itemView);
                imageView= (ImageView) itemView.findViewById(R.id.thumbnailView);
            }
    
        }
    
        @Override
        public VideoListAdapter.MyView onCreateViewHolder(ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.video_row, parent, false);
            return new MyView(itemView);
        }
    
        @Override
        public void onBindViewHolder(VideoListAdapter.MyView holder, final int position) {
            holder.imageView.setImageDrawable(thumbnailViews.get(position));
            holder.imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Player.cueVideo(VideoId.get(position));
                }
            });
        }
    
        @Override
        public int getItemCount() {
            return thumbnailViews.size();
        }
    }
    }
    

    activity_main & video_row