Android - 如何从 API 加载多个列表?

问题描述 投票:0回答:1

我有一个API(https://www.thecocktaildb.com/api.php)我想一一加载所有列表。有一个请求,我可以在 URL 中的过滤器中找到所有类别和列表之间的唯一区别。请求函数我应该使用什么来实现这样的功能? 它应该是什么样子的草图。也许分页库有用吗?请帮忙!

android android-recyclerview data-binding pagination retrofit
1个回答
0
投票

我相信您可以使用 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 来看,类别查询中没有分页,所以这个解决方案可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.