我在DAO上具有以下SELECT
@Query("SELECT * FROM todo ORDER BY time DESC")
abstract DataSource.Factory<Integer, TodoItem> getAll();
我有一个仅返回上述内容的存储库。在模型中,我有
PagedList.Config config = new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(40)
.setPageSize(20)
.build();
todos = new LivePagedListBuilder<>(todoRepository.getAll(), config).build();
该片段仅观察上述todos
,并在新更新时调用adapter.submitList(items)
。
我刚获得所有数据并用它填充androidx.paging
之前,最近才切换为使用RecyclerView
。
上面的代码可以很好地解决目前的问题。问题是我需要多个视图的支持。更确切地说,我需要将日期添加到具有该日期的第一个元素的顶部。在升级之前,我正在循环这些项目并在需要的地方添加DateHeader
项目(并在适配器中处理多种视图类型),但是使用这种新方法,我无法编辑DataSource.Factory
提供的内容。
不能使用ItemDecoration
或在每个项目中添加日期并更改其可见性。
我也将日期保存在数据库中,所以如果有帮助的话,我可以group by
并通过date
获取项目计数。
是否有解决此问题的方法?仅供参考,此处没有网络通信,所有内容都是本地的,仅保存在数据库中。
似乎目前不支持将其他项添加到DAO的DataSource.Factory
返回的列表中。