如何使用 youtube data api v3 中的 nextPageToken 在 android recycler 视图中加载更多视频

Posted

技术标签:

【中文标题】如何使用 youtube data api v3 中的 nextPageToken 在 android recycler 视图中加载更多视频【英文标题】:How to use nextPageToken from youtube data api v3 to load more videos in android recycler view 【发布时间】:2015-10-20 21:01:37 【问题描述】:

我正在构建一个应用程序,其中有一个 Recycler View,其中包含我的 YouTube 频道视频。一切正常。我成功获得了前 10 个结果。但是现在当用户向下滚动并达到第 10 个结果时,我想加载接下来的 10 个结果,

我的 json 响应有 nextPageToken 但我不知道如何使用 nextPageToken 在我的回收站视图中加载下一页视频, 有什么帮助吗?

  https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=10&playlistId=PLWz5rJ2EKKc_XOgcRukSoKKjewFJZrKV0&fields=nextPageToken,items(id,snippet(title,description,position,thumbnails(medium,high),resourceId/videoId))&key=API_KEY;    

json解析代码:

    private ArrayList<VideoData> parseJSONReaponse(JSONObject response) 
    ArrayList<VideoData> listVideos = new ArrayList<>();
    if (response != null || response.length() > 0) 

        String nextPageToken = Constants.NA;
        try 

            if (response.has(KEY_NEXTPAGETOKEN)
                    && !response.isNull(KEY_NEXTPAGETOKEN) )
                nextPageToken = response.getString(KEY_NEXTPAGETOKEN);
            

            JSONArray arrayItems = response.getJSONArray(KEY_ITEMS);

            for (int i = 0; i < arrayItems.length(); i++) 
                String title = Constants.NA;
                String urlThumbnail = Constants.NA;
                String resourceID = Constants.NA;

                JSONObject currentItems = arrayItems.getJSONObject(i);

                if (currentItems.has(KEY_SNIPPET)
                        && !currentItems.isNull(KEY_SNIPPET)) 
                    JSONObject objectSnippet = currentItems.getJSONObject(KEY_SNIPPET);

                    if (objectSnippet.has(KEY_TITLE)
                            && !objectSnippet.isNull(KEY_TITLE)) 
                        title = objectSnippet.getString(KEY_TITLE);
                    

                    if (objectSnippet.has(KEY_THUMBNAIL)
                            && !objectSnippet.isNull(KEY_THUMBNAIL)) 
                        JSONObject objectThumbnail = objectSnippet.getJSONObject(KEY_THUMBNAIL);


                        if (objectThumbnail.has(KEY_THUMBNAIL_MEDIUM)
                                && !objectThumbnail.isNull(KEY_THUMBNAIL_MEDIUM)) 
                            JSONObject objectThumbnailMedium = objectThumbnail.getJSONObject(KEY_THUMBNAIL_MEDIUM);


                            if (objectThumbnailMedium.has(KEY_THUMBNAIL_MEDIUM_URL)
                                    && !objectThumbnailMedium.isNull(KEY_THUMBNAIL_MEDIUM_URL)) 
                                urlThumbnail = objectThumbnailMedium.getString(KEY_THUMBNAIL_MEDIUM_URL);
                            
                        
                    

                    if (objectSnippet.has(KEY_RESOURCEID)
                            && !objectSnippet.isNull(KEY_RESOURCEID)) 
                        JSONObject objectResourceId = objectSnippet.getJSONObject(KEY_RESOURCEID);

                        if (objectResourceId.has(KEY_VIDEOID)
                                && !objectResourceId.isNull(KEY_VIDEOID)) 
                            resourceID = objectResourceId.getString(KEY_VIDEOID);
                        
                    
                

                VideoData videoData = new VideoData();
                videoData.setTitle(title);
                videoData.setUrlThumbnail(urlThumbnail);
                videoData.setVideoId(resourceID);

                if (!title.equals(Constants.NA))
                    listVideos.add(videoData);
                

            

         catch (JSONException e) 
            e.printStackTrace();
        
    
    return listVideos;

【问题讨论】:

您找到了任何答案吗?如果你找到了请分享给我? 【参考方案1】:

您可以尝试发出相同的请求,但需要额外的参数pageToken=&lt;the-nextPageToken-you-received&gt;

【讨论】:

【参考方案2】:

在您的网址中只需更改maxResults=your value,它就会加载您的视频

谢谢

【讨论】:

不! maxResult 有一个限制(即从 0-50)

以上是关于如何使用 youtube data api v3 中的 nextPageToken 在 android recycler 视图中加载更多视频的主要内容,如果未能解决你的问题,请参考以下文章

如何使用新的 YouTube Data API (V3) 获取某个频道的上传视频列表?

如何使用来自 YouTube Data API V3 的 enpoint 搜索通过 channelId 获取频道图标

如何通过 YouTube Data API v3 从我自己的 YouTube 频道获取所有视频

使用 YouTube Data API v3 确定 YouTube 频道的上传速率

如何从 Youtube Data API v3 获取最大搜索结果?

YouTube 频道中的“已发布视频”和“上传”有啥区别?以及如何通过 YouTube Data v3 API 获取它们?