【问题标题】:Android - How to load several lists from API?Android - 如何从 API 加载多个列表?
【发布时间】:2021-04-02 09:09:42
【问题描述】:

我有一个 API (https://www.thecocktaildb.com/api.php) 我想一一加载所有列表。有一个请求,我可以在 URL 中的过滤器中找到所有类别和列表之间的唯一区别。request function 我应该使用什么来实现这样的功能? The sketch of how it should be。也许分页库有用?请帮忙!

【问题讨论】:

    标签: android android-recyclerview data-binding retrofit paging


    【解决方案1】:

    我相信您可以为此使用 Paging 3。 我假设您将从将所有类别放在一个列表中开始。

    class DrinkSource(
        private val categories: List<String>
    ) : PagingSource<String, Drink>() {
        override suspend fun load(
            params: LoadParams<String>
        ): LoadResult<String, Drink> {
            val result = requestFromAPI(params.key ?: categories[0])
            val index = categories.indexOf(params.key)
            val previous = if (index == 0) null else categories[index - 1]
            val next = if (index == categories.size - 1) null else categories[index + 1]
            return LoadResult.Page(result, prevKey = previous, nextKey = next)
        }
        
        private suspend fun requestFromAPI(category: String): List<Drink> {
            // replace this with an API call
            return listOf(Drink(1, ""))
        }
    }
    

    从我看到的你的 API 来看,类别查询中没有分页,所以这个解决方案可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 2015-06-29
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2015-09-07
      相关资源
      最近更新 更多