搜索请求中如何获取频道视频数、订阅者数并在RecyclerView完整展示
问题原因
你调用的搜索接口默认仅返回基础资源ID标识,不会附带对应资源的完整元数据,因此会出现字段空值、图标缺失的问题。
解决方案
1. 提取不同类型资源的ID
先从搜索返回结果的id.kind字段区分三类资源,提取对应ID:
- 类型为
youtube#video的资源提取id.videoId - 类型为
youtube#channel的资源提取id.channelId - 类型为
youtube#playlist的资源提取id.playlistId

2. 批量查询补全缺失字段
调用对应接口批量补全所有缺失的元数据,避免单条请求浪费配额:
- 补全视频信息:调用
videos.list接口,part参数传入snippet,将所有视频ID拼接后传入id参数,可拿到视频所属频道ID、视频封面等字段;随后将所有拿到的频道ID批量传入channels.list接口,part参数传入snippet,即可拿到频道头像等缺失信息。 - 补全播放列表信息:调用
playlists.list接口,part参数传入snippet,contentDetails,批量传入播放列表ID,即可拿到播放列表封面、所属频道、包含视频数等字段。 - 补全频道类搜索结果信息:直接将频道ID批量传入
channels.list接口即可获取完整频道信息。
3. 多类型数据接入RecyclerView实现
使用RecyclerView多视图类型能力承载三类不同内容:
- 定义统一的父接口
SearchResultItem,让视频、频道、播放列表三类数据的实体类均实现该接口 - 重写Adapter的
getItemViewType方法,根据当前item的资源类型返回对应的视图类型标记 - 为三类内容分别创建独立的ViewHolder,在
onCreateViewHolder中根据视图类型加载对应布局,onBindViewHolder中根据类型绑定对应补全后的字段即可。
内容的提问来源于stack exchange,提问作者Radin
相关产品推荐
相关产品推荐

