android - 未使用 DataSource 调用 BoundaryCallback
问题描述
我创建了一个边界回调和一个数据源,数据源从数据库中读取,边界回调应该进行 API 调用并持久化到数据库。
但是,边界回调中被覆盖的方法永远不会被调用,我不知道是否有一条规则说你不能同时使用两者。但这让我发疯,我不明白。
private val postsDataFactory = object: DataSource.Factory<String, Post>() {
override fun create(): DataSource<String, Post> {
return ItemDataSource(application)
}
}
private val postsBoundaryCallback = object: PagedList.BoundaryCallback<Post>(){
override fun onZeroItemsLoaded() {
super.onZeroItemsLoaded()
viewModelScope.launch {
try {
val posts = postsRepo.findPosts(mutableMapOf("limit" to "1"))
database.postDao().create(posts)
} catch (e: IOException) {
Log.d("NETWORK_ERROR", e.message)
} catch (e: Exception) {
Log.d("UNCAUGHT_ERROR", e.message)
}
}
}
override fun onItemAtEndLoaded(itemAtEnd: Post) {
viewModelScope.launch {
try {
val posts = postsRepo.findPosts(mutableMapOf(
"before" to itemAtEnd.id,
"limit" to "1"
))
database.postDao().create(posts)
} catch (e: IOException) {
Log.d("NETWORK_ERROR", e.message)
} catch (e: Exception) {
Log.d("UNCAUGHT_ERROR", e.message)
}
}
}
}
private val postPageConfig = PagedList
.Config
.Builder()
.setPageSize(10)
.setInitialLoadSizeHint(10)
.build()
val postsLiveData = LivePagedListBuilder(
postsDataFactory,
postPageConfig
)
.setBoundaryCallback(postsBoundaryCallback)
.build()
解决方案
推荐阅读
- python - 在 m 大小的窗口中查找最小 n 值的移动平均值
- css - 发布预览描述消除了 wordpress 中的 BR 标签
- javascript - 如何在具有更多mysql数据库连接的php页面中实时工作
- java - 如何解决类/驱动程序并知道输出将是什么
- list - Ocaml 类型与函数中的列表不匹配
- r - 根据存在层次结构的另一列删除一列中的重复项
- r - 在 R 中拆分数据
- azure-devops - terraform 提供程序导致 TypeError:无法读取 null 的属性“匹配”
- sqlite - 选择更改值,并获取上次更改的时间
- excel - With 语句产生运行时错误 438