根据文档loadInitial
在UI线程中创建PagedList期间被调用,以提供一些占位符,直到获取真实数据为止,以避免向用户显示空列表。
是否可以跳过loadInitial
或返回空列表?
如果我使用默认配置loadAfter
返回空列表,则不会调用。
我查看了几种实现,但是所有人都只是复制他们的代码以从loadInitial
和loadAfter
中从Internet加载数据,在我看来这并不是一个很好的解决方案。
答案 0 :(得分:0)
在您的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()