数据源始终 returns 来自房间数据库的完整数据,即使我提供了每页加载的数据量

Data source always returns full data from room data base even if I provided the amount of data loaded each page

我正在使用分页(android Jetpack 的一部分)从我的房间数据库中检索数据。我想在每页上获取 50 条记录。但是 'DataSource.Factory.toLivedata(pageSize)' 函数从数据库返回完整数据。

我尝试为 toLivedata() 方法提供配置,但似乎被忽略了

private val config = PagedList.Config.Builder()
        .setInitialLoadSizeHint(50)
        .setPageSize(50)
        .build()

fun getPagedData(): LiveData<PagedList<TransactionEntity>> =
        transactionDao.getAllTransactions().toLiveData(config)

//TransctionDao
@Query("SELECT * FROM transaction_table order by date DESC")
    fun getAllTransactions(): DataSource.Factory<Int, TransactionEntity>

//Observing Live Data
getPagedData().observe(this,Observer<PagedList<TransactionEntity>> { t ->
            Log.d("Activity", "Size is " + t.size)

})

我原以为 PagedList 的大小为 50,但它总是给出来自 transaction_table

的完整记录

您认为所有数据都已加载的原因是 PagedList 使用占位符表示尚未加载的数据,因此在 documentation 中,大小表示整个数据大小,而不仅仅是加载的数据大小.

如果你想改变这个,你可以在配置生成器中使用 setEnablePlaceholders(false)。您可以通过调用 get(6500) 来测试它,您应该得到 null,因为该项目尚未加载。

我建议您阅读 PlaceHolders 部分。