问题:
我正在使用Paging
提供的Android Jetpack库,但无法测试{中使用PagedList<T>
的{{1}}和DataSource.Factory<Int, T>
数据{1}}
我的使用PagedList.BoundaryCallback<T>()
和ViewModel
接收PagedList
数据的代码::
PagedList.BoundaryCallback<T>()
还有我的班级MyBoundaryCallback:
PagedList.Config.Builder()
由于类final var boundaryCallback = MyBoundaryCallback(
webServiceApi, mainRepository, PAGE_SIZE, appExecutors)
private final val pagedListConfig = PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setPrefetchDistance(PREFETCH_DISTANCE)
.setPageSize(PAGE_SIZE)
.build()
var pagedListData: LiveData<PagedList<MyData>> =
LivePagedListBuilder(dbDAO.loadAllPagedData(), pagedListConfig)
.setBoundaryCallback(boundaryCallback)
.build()
正在推送数据,就像您在上方class MyBoundaryCallback (private val webServiceApi: ApiService,
private val mainRepository: MainRepository,
private val networkPageLimit: Int,
private val appExecutors: AppExecutors) : PagedList.BoundaryCallback<MyData>() {
override fun onZeroItemsLoaded() {
webServiceApi.getData(0, networkPageLimit).enqueue(WebserviceCallback())
}
override fun onItemAtEndLoaded(itemAtEnd: MyData) {
webServiceApi.getData((itemAtEnd.id!! + 1), networkPageLimit).enqueue(WebserviceCallback())
}
private fun handleResponse(response: Response<List<MyData>>) {
appExecutors.diskIO().execute {
mainRepository.insertResultIntoDb(response.body())
}
}
inner class WebserviceCallback : Callback<List<MyData>> {
override fun onFailure(call: Call<List<MyData>>, t: Throwable) {
}
override fun onResponse(call: Call<List<MyData>>, response: Response<List<MyData>>) {
handleResponse(response)
}
}
}
中看到的代码一样,MyBoundaryCallback
对象正在从我的房间Db中获取数据,因为它发出了{{1} },找到下面的代码:
ViewModel
我不确定如何模拟LiveData
,因此,如果有人对如何解决这个问题有任何想法,请与我们分享
对于简单数据列表,我可以使用以下代码进行测试:
DataSource.Factory<Int, T>