如何解决BoundaryCallback 类仅使用分页库 2 调用一次
我正在使用分页库 2 使用房间数据库执行本地数据存储,加载数据后,我将 param.key 保存在共享首选项中,然后在边界回调中将其取回以触发新页面,但问题是边界回调只调用一次,不再调用,我不明白为什么,任何帮助将不胜感激,谢谢
Libary
- BoundaryCallback 类
override fun loadAfter(params: LoadParams<Int>,callback: LoadCallback<Int,MovieResultItem>) {
compositedisposable.add(apiInterface
.getPopularMovies(BuildConfig.MoviesApiKey,languageCode,params.key)
.toObservable()
.subscribeOn(Schedulers.io())
.subscribe ({
callback.onResult(it?.results!!,params.key + 1)
//saving params.key here
saveCurrentKey(context,params.key)
},{
t: Throwable? ->
Timber.d("Error ${t?.message}")
})!!)
}
}
private fun saveCurrentKey(context: Context,key : Int){
val popularPrefs = context.getSharedPreferences(Extras.POPULAR_PREFS,Context.MODE_PRIVATE)
popularPrefs.edit().apply {
putInt("value",key)
apply()
}
}
- 将 Boundarycallback 设置为我的 LiveDataPagedlist
override fun onZeroItemsLoaded() {
super.onZeroItemsLoaded()
getMovieGenre()
}
override fun onItemAtFrontLoaded(itemAtFront: MovieResultItem) {
super.onItemAtFrontLoaded(itemAtFront)
getMovieGenre()
}
override fun onItemAtEndLoaded(itemAtEnd: MovieResultItem) {
super.onItemAtEndLoaded(itemAtEnd)
getMovieGenre()
}
@SuppressLint("CheckResult")
private fun getMovieGenre() {
apiInterface.getPopularMovies(BuildConfig.MoviesApiKey,Extras.getLanguageCode(context),key!!)
.toObservable()
?.doOnSubscribe {
compositedisposable.add(it)
}
?.subscribeOn(Schedulers.io())
?.map {
it.results
}
?.subscribe({
it!!.map {
it.uniqueIdentifier = Extras.POPULAR_VALUE
popularMoviesDao.insertPopularMovies(it)
}
},{
Timber.d("Boundary Popular Movies Exception ${it.message}")
})
}
}
// Getting params.key and pass it to my api call request to fetch data
private fun getCurrentKey(context: Context): Int {
val popularPrefs = context.getSharedPreferences(Extras.POPULAR_PREFS,Context.MODE_PRIVATE)
return popularPrefs.getInt("value",1)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。