You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:55:22