具有多个视图RecyclerView的Room DataSource.Factory

问题描述 投票:0回答:1

我在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获取项目计数。

是否有解决此问题的方法?仅供参考,此处没有网络通信,所有内容都是本地的,仅保存在数据库中。

android mvvm android-recyclerview androidx android-paging
1个回答
0
投票

似乎目前不支持将其他项添加到DAO的DataSource.Factory返回的列表中。

© www.soinside.com 2019 - 2024. All rights reserved.