根据文档,在 UI 线程中创建 PagedList 期间调用 loadInitial
以提供一些占位符,直到获取实际数据以避免向用户显示空列表。
有什么方法可以跳过 loadInitial
或返回空列表吗?
如果我使用默认配置返回空列表,loadAfter
将不会被调用。
我查看了一些实现,但所有人都只是复制他们的代码以在 loadInitial
和 loadAfter
中从互联网加载数据,在我看来这不是很好的解决方案。
最佳答案
在您的loadInitial
方法中只需设置重试操作
setRetry(Action { loadInitial(params, callback) })
override fun loadInitial(params: LoadInitialParams<String>, callback: LoadInitialCallback<String, Lab>) {
setRetry(Action { loadInitial(params, callback) })
// Set network state if you want
networkState.postValue(Response(Response.ViewState.ERROR, null, Throwable("")))
initialLoad.postValue(Response(Response.ViewState.ERROR, null, Throwable("")))
}
setRetry
方法
private var retryCompletable: Completable? = null
private fun setRetry(action: Action?) {
if (action == null) {
this.retryCompletable = null
} else {
this.retryCompletable = Completable.fromAction(action)
}
}
当你想调用 loadAfter
时,你必须 invalidate
sourceFactory
。
fun refresh() = sourceFactory.dataSource.value.invalidate()
关于android - 分页库 : skip loadInitial in PageKeyedDataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53535609/