我正在使用 Android Jetpack 中的Paging库在我的 RecyclerView 中进行分页加载行为。现在我想要一个简单的事情 - 在我的 UI 中获得一个没有数据且列表为空的信号,这样我就可以显示“没有项目”之类的消息。
问题是我PositionalDataSource
没有使用占位符,因为我不知道列表会有多大。另一个问题是我只能PagedList
从DataSource
.
所以问题是 - PagedList
or是否DataSource
会发出“我已完成加载”之类的信号?该事件在库中明确定义,因为一旦获得的数据少于要求的数据,它将停止加载,如此处所述:返回的数据必须是这个大小,除非在列表末尾。问题是——我能以某种方式得到那个事件的信号吗?
现在我看到以下解决方案。我已经实现了我DataSource.Factory
在此页面中显示的 Android 指南中的内容:将我DataSource
的作为LiveData
工厂分发。LiveData
此外,我已经从DataSource
被调用的对象中暴露了一个对象isLoading
,我在 UI 中使用它来在每次DataSource
加载某些内容时显示一个进度条。我正在考虑添加另一个LiveData
调用emptyResults
,然后我可以在我的 UI 中将两者连接在一起,以便在emptyResults && !isLoading
.
我想知道是否有更好的方法来做到这一点。