gpt4 book ai didi

android - 使用 Android Paging 3 库时如何显示空 View

转载 作者:行者123 更新时间:2023-12-03 18:09:36 25 4
gpt4 key购买 nike

我正在使用分页 3 库。我可以检查刷新状态是“加载”还是“错误”,但我不确定如何检查“空”状态。我可以添加以下条件,但我不确定它的条件是否正确

adapter.loadStateFlow.collectLatest { loadStates ->
viewBinding.sflLoadingView.setVisibility(loadStates.refresh is LoadState.Loading)
viewBinding.llErrorView.setVisibility(loadStates.refresh is LoadState.Error)
viewBinding.button.setOnClickListener { pagingAdapter.refresh() }

if(loadStates.refresh is LoadState.NotLoading && (viewBinding.recyclerView.adapter as ConcatAdapter).itemCount == 0){
viewBinding.llEmptyView.setVisibility(true)
}else{
viewBinding.llEmptyView.setVisibility(false)
}
}
我也遇到了其他问题
我已经实现了搜索功能,并且在输入超过 2 个字符之前,我使用的是相同的分页源,如下所示,但上面的 loadstate 回调只执行一次。这就是为什么如果清除搜索查询,我无法隐藏空 View 。我是这样做是为了保存来自前端的 api 调用。
private val originalList : LiveData<PagingData<ModelResponse>> = Transformations.switchMap(liveData){
repository.fetchSearchResults("").cachedIn(viewModelScope)
}

val list : LiveData<LiveData<PagingData<ModelResponse>>> = Transformations.switchMap{ query ->
if(query != null) {
if (query.length >= 2)
repository.fetchSearchResults(query)
else
originalList
}else
liveData { emptyList<ModelResponse>() }
}

最佳答案

这是在 Android Paging 3 中处理空 View 的正确方法:

adapter.addLoadStateListener { loadState ->
if (loadState.source.refresh is LoadState.NotLoading && loadState.append.endOfPaginationReached && adapter.itemCount < 1) {
recycleView?.isVisible = false
emptyView?.isVisible = true
} else {
recycleView?.isVisible = true
emptyView?.isVisible = false
}
}

关于android - 使用 Android Paging 3 库时如何显示空 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64370736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com