单击 Paging 3 库中的项目加载更多数据
Posted
技术标签:
【中文标题】单击 Paging 3 库中的项目加载更多数据【英文标题】:Load more data on click of an item in Paging 3 library 【发布时间】: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 项中。我们如何做到这一点?
【问题讨论】:
【参考方案1】:Paging 中的页面获取是由通过 .get(index)
对演示者调用的项目访问触发的(例如,PagingDataAdapter)。如果您需要在访问项目时避免页面抓取,您可以致电.peek(index)
【讨论】:
以上是关于单击 Paging 3 库中的项目加载更多数据的主要内容,如果未能解决你的问题,请参考以下文章
Jetpack Compose 无限加载列表(滚到底部自动加载更多)