我有实现性分页库3,它工作并显示数据,我需要实现的是加载更多的功能,所以当用户向下滚动时,它会获取一个页面10项,所以基本上在加载新数据之间,我希望在底部显示一个进度条,但是由于这是我第一次使用分页库3,我不知道如何做到这一点,如果有人可以的话,谢谢。
。
lifecycleScope.launch {
newsAdapter.loadStateFlow.collectLatest { loadingState ->
if(loadingState.refresh is LoadState.Loading){
binding.progressBar.visibility = View.GONE
}
if(loadingState.refresh is LoadState.Loading) {
binding.progressBar.visibility = View.VISIBLE
}
if(loadingState.refresh is LoadState.NotLoading){
binding.progressBar.visibility = View.GONE
}
}
}发布于 2021-03-16 00:25:49
用于向下滚动的LoadState是CombinedLoadStates.append,而不是.refresh,当列表被替换时(初始加载/刷新)。
实际上,如果您对LoadState感知的ConcatAdapter风格的页脚感兴趣,那么分页有一个内置的内容,请参阅:https://developer.android.com/topic/libraries/architecture/paging/v3-paged-data#load-state-adapter
发布于 2022-11-21 14:57:04
查看https://medium.com/@yash786agg/jetpack-paging-3-0-android-bae37a56b92d,我发现我们也应该观察append状态,正如@dlam所写的那样。
adapter.addLoadStateListener { loadState ->
if (loadState.refresh is LoadState.Loading ||
loadState.append is LoadState.Loading)
// Show ProgressBar
else {
// Hide ProgressBar
// If we have an error, show a toast
val errorState = when {
loadState.append is LoadState.Error -> loadState.append as LoadState.Error
loadState.prepend is LoadState.Error -> loadState.prepend as LoadState.Error
loadState.refresh is LoadState.Error -> loadState.refresh as LoadState.Error
else -> null
}
errorState?.let {
Toast.makeText(this, it.error.toString(), Toast.LENGTH_LONG).show()
}
}
}https://stackoverflow.com/questions/66493960
复制相似问题