【问题标题】:MediaBrowser(Compat) subscribe/query items with pagination [closed]MediaBrowser(Compat)使用分页订阅/查询项目[关闭]
【发布时间】:2018-06-25 03:17:48
【问题描述】:

在我的服务端,它有大量数据,我想为项目提供分页方式。 MediaBrowser/MediaBrowserService(Compat) 之间是否有推荐的分页遍历流程?

我想在Result<List<MediaItem>> 中提供部分数据而不是所有数据(例如所有 YouTube 歌曲),而浏览器端使用分页一次提取部分数据。

【问题讨论】:

    标签: android pagination android-support-library


    【解决方案1】:

    在你的

    MediaService extends MediaBrowserServiceCompat
    
      @Override
        public void onLoadChildren(@NonNull final String parentMediaId, @NonNull final Result<List<MediaItem>> result) {
           result.detach();
           for (int page = 0; i<pages.size(); i++){
                result.sendResult(getList(page));
             }
        }
    public List<MediaItem> getList(int page){
      //here create List for page-number == page
    }
    

    或 您可以在您的 Fragment 或 Activity with page 中提出请求

    MediaBrowserCompat mediaBrowser = ...;
    mediaBrowser.subscribe("1"/*it's page*/, mSubscriptionCallback);
    

    然后在你的服务中做这个:

     @Override
            public void onLoadChildren(@NonNull final String page, @NonNull final Result<List<MediaItem>> result) {
               result.detach();
               result.sendResult(getList(page));
    
            }
    

    【讨论】:

      【解决方案2】:

      我想在我的应用程序中做类似的事情 - 我想以分页方式返回设备上的现有歌曲。就像你说的,onLoadChildren() 方法的部分结果。我最终使用 Android 的新 Paging library 来做到这一点。使用该库,我可以让客户端/UI 端仅向服务请求用户有兴趣查看的页面,然后仅在 onLoadChildren() 方法中提供那些页面,调用客户端的 subscribe() 方法来检索它。 我在post I wrote 中详细介绍了它,我还提供了代码示例以更好地展示这个概念。

      【讨论】:

      • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
      • 想解释一下为什么这不能回答这个问题?我描述了我如何解决一个非常相似的问题,甚至链接到我写的帖子,我在其中更详细地解释了解决方案并分享了代码示例。我认为我的回答,通过链接的帖子,可以真正回答问题并帮助提问者,因为他询问分页,这正是我所面临的。
      猜你喜欢
      • 1970-01-01
      • 2020-02-14
      • 2015-09-06
      • 2018-04-15
      • 2015-11-28
      • 2017-03-11
      • 2012-01-13
      • 2018-03-25
      • 2011-11-21
      相关资源
      最近更新 更多