android - 即使我提供了每页加载的数据量,数据源也总是从房间数据库中返回完整数据
问题描述
我正在使用分页(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 对尚未加载的数据使用占位符,因此在文档中,大小表示整个数据大小,而不仅仅是加载的数据大小。
如果要更改此设置,可以setEnablePlaceholders(false)
在配置生成器中使用。你可以通过调用来测试它get(6500)
,你应该得到 null 因为这个项目还没有加载。
我建议您阅读PlaceHolders部分。
推荐阅读
- angular - Angular HTTP Interceptor subscribing to observable and then returning next.handle but throwing TypeError: You provided 'undefined'
- python - The first and the last date that a variable appear in my dataframe
- excel - 如果日期较旧,如何制作删除行的代码
- python - How to build regex for finding words that start with `\n` and letter and end with digit OR word?
- asp-classic - 如何通过域而不是 IP 限制经典 asp 页面访问?
- elasticsearch - 如何将默认 GKE 堆栈驱动程序日志记录更改为 fluentd
- windows - Win32 API 与 Windows Api Set (WIn10),Windows Api 是否为完整的 win32api 设置了 DLL 包装器?
- docker - 用户 'user=bn_moodle'@'localhost' 的访问被拒绝(使用密码:否)
- google-apps-script - 收到表单回复后,Google 表格脚本通过电子邮件发送
- python-3.x - 如何使用 tf.saved_model API 在 tf.data.Dataset() 中恢复悬空的 tf.py_func?