如何获取YouTube指定播放列表信息并在RecyclerView展示及跳转视频
实现YouTube播放列表内容展示与跳转的解决方案
1. 基础配置
- 依赖添加:在
build.gradle中加入RecyclerView、网络请求库(如Retrofit),可选Google YouTube Data API客户端库 - 权限声明:在
AndroidManifest.xml中添加网络权限<uses-permission android:name="android.permission.INTERNET" /> - API密钥准备:在Google Cloud Console创建项目,启用YouTube Data API v3,生成并配置API_KEY(建议限制包名和SHA-1防止滥用)
2. 获取播放列表数据
使用YouTube Data API v3的PlaylistItems.list接口获取视频信息,核心参数:
part=snippet:指定返回包含标题、描述、视频ID的片段数据playlistId:目标播放列表的ID(可从YouTube播放列表URL中提取)key:你的API_KEY
Retrofit接口示例(Kotlin)
interface YouTubeApi { @GET("https://www.googleapis.com/youtube/v3/playlistItems") suspend fun fetchPlaylistVideos( @Query("part") part: String = "snippet", @Query("playlistId") playlistId: String, @Query("key") apiKey: String, @Query("maxResults") maxResults: Int = 20 ): PlaylistResponse } // 对应API返回的数据类 data class PlaylistResponse( val items: List<PlaylistItem> ) data class PlaylistItem( val snippet: Snippet ) data class Snippet( val title: String, val description: String, val resourceId: ResourceId ) data class ResourceId( val videoId: String )
3. RecyclerView展示数据
自定义Adapter绑定视频标题和描述,同时设置点击事件:
Adapter示例
class VideoListAdapter( private val videoList: List<Snippet>, private val onVideoClick: (String) -> Unit ) : RecyclerView.Adapter<VideoListAdapter.VideoViewHolder>() { inner class VideoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val titleTv: TextView = itemView.findViewById(R.id.tv_video_title) val descTv: TextView = itemView.findViewById(R.id.tv_video_desc) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VideoViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_video, parent, false) return VideoViewHolder(view) } override fun onBindViewHolder(holder: VideoViewHolder, position: Int) { val video = videoList[position] holder.titleTv.text = video.title holder.descTv.text = video.description holder.itemView.setOnClickListener { onVideoClick(video.resourceId.videoId) } } override fun getItemCount() = videoList.size }
4. 点击跳转YouTube视频
优先唤起YouTube官方APP,若未安装则打开网页版:
跳转逻辑示例
fun launchYouTubeVideo(context: Context, videoId: String) { // 尝试打开YouTube APP val appIntent = Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:$videoId")) // 备用打开网页 val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.youtube.com/watch?v=$videoId")) if (appIntent.resolveActivity(context.packageManager) != null) { context.startActivity(appIntent) } else { context.startActivity(webIntent) } }
实用技术资源
- YouTube Data API v3官方文档:详细说明接口参数、返回结构、配额限制等核心规则
- Android RecyclerView官方指南:涵盖Adapter优化、数据更新、性能调优等最佳实践
- Android Intent官方文档:学习如何正确唤起第三方应用或网页
- Retrofit官方文档:掌握网络请求的封装、异步处理、错误捕获等技巧
内容的提问来源于stack exchange,提问作者Med_Kt
相关产品推荐
相关产品推荐

