【问题标题】:Android - How to load several lists from API?Android - 如何从 API 加载多个列表?
【发布时间】:2021-04-02 09:09:42
【问题描述】:
【问题讨论】:
标签:
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 来看,类别查询中没有分页,所以这个解决方案可以工作。