当前,我正在尝试实现android jetpack提供的页面库。但是从DAO获取数据时遇到了一些麻烦。实际上,当我获得数据时,PagedList
的大小就等于表中所有行的大小!
这是我的DAO:
@Dao
interface TableDao {
@Query("SELECT * FROM table")// I tried also with ORDER BY field DESC, as I saw in some examples.
fun getData(): DataSource.Factory<Int, MyEntity>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertAll(songs: List<SongEntity>)
}
我试图满足此测试:
@Test
fun pageSize() {
val data = EntityFactory.makeList(50)
database.getTableDao().apply {
insertAll(data)
val pageSize = 5
RxPagedListBuilder(getData(), pageSize)
.buildObservable()
.map { it.size }
.test()
.assertValue(pageSize)
}
}
我不知道是否缺少某些上下文,但是我想要实现的是逐步加载数据。任何帮助/解释将不胜感激。
答案 0 :(得分:1)
@pskink指出,没有问题
PageList
确保表计数的大小,但最终只是按装入项目的方式装入项目。在初始化时,它会预取 3倍的页面大小。我适应了考试并通过了:
@Test
fun pageSize() {
val data = EntityFactory.makeList(500)
database.getTableDao().apply {
insertAll(data)
repeat(10) {
val pageSize: Int = DataFactory.randomInt(5..50)
RxPagedListBuilder(getData(), pageSize)
.buildObservable()
.map { it.filterNotNull() }
.map { it.size }
.test()
.assertValue(pageSize * 3)
}
}
}