【发布时间】:2021-12-13 11:13:28
【问题描述】:
我正在使用 paging 3 库,我想通过单击回收站中的按钮来加载下一页项目。
//for first case it will be null, then we can pass some default value, in our case it's 1
val pageNumber = params.key ?: DEFAULT_PAGE_INDEX
PAGE_NUMBER = DEFAULT_PAGE_INDEX
return try {
val response = tasksApi.getTasks(
token = "Bearer " + NicoPrefs.getSSOAccessToken(),
status = pagingTasksInput.status,
type = pagingTasksInput.type,
activity = pagingTasksInput.activity,
sort = pagingTasksInput.sort,
sortBy = pagingTasksInput.sortBy,
pageNumber = if (pagingTasksInput.pageNumber > 0) pagingTasksInput.pageNumber else pageNumber,
pageLimit = pagingTasksInput.pageLimit,
assignee = pagingTasksInput.assignee
)
val data = pagedResponse?.result
LoadResult.Page(
data.orEmpty(),
prevKey = if (pageNumber == DEFAULT_PAGE_INDEX) null else pageNumber - 1,
nextKey = null
)
} catch (exception: IOException) {
return LoadResult.Error(exception)
} catch (exception: HttpException) {
return LoadResult.Error(exception)
}
}
我添加了页脚
map {
it.insertFooterItem(TaskDto(footer = "FOOTER", description = "Load more"))
}
当我点击“加载更多”时,更新页码并进行 API 调用(我的页面限制为 50)
viewLifecycleOwner.lifecycleScope.launch {
testViewModel.getPagingTasks(getAssignedTasks)
.collectLatest { response ->
Timber.d("paging item = ${assignedTasksPagingAdapter?.snapshot()}")
assignedTasksPagingAdapter?.submitData(
response
)
}
}
我必须将接下来的 50 项附加到回收站视图中现有的 50 项中。我们如何做到这一点?
【问题讨论】:
标签: android kotlin flow android-paging-3