【问题标题】:How to get the total query count with a PagedListAdapter in Android Room如何在 Android Room 中使用 PagedListAdapter 获取总查询数
【发布时间】:2020-08-23 06:02:25
【问题描述】:

这遵循上一个问题的逻辑,在此处引用相关代码部分:

我实现了以下查询,它可以返回 0 到数据库中条目数之间的任意数量的结果,具体取决于查询输入文本:

@Query("SELECT * FROM Conversation JOIN ConversationFts ON Conversation.id == ConversationFts.id WHERE ConversationFts.title LIKE :text GROUP BY Conversation.id")
public abstract DataSource.Factory<Integer, Conversation> search(String text);

除了结果总数之外,一切都很好。

由于我每次在返回的观察者中收到结果列表时都将LivePagedListBuilder 配置为setInitialLoadSizeHint(15),因此列表的大小始终为15(如果查询返回的结果较少,则列表的大小会更小),这是观察者第一次为每个唯一列表触发(这意味着每当唯一查询输入返回结果列表时)。一旦列表向下滚动超过 15 个结果,它会根据PageListAdapter 实现更自动地加载,但我从来没有得到除 15 之外的任何其他计数。

searchRepository(myQuery).observe(this, resultList -> {
    Log.i("RESULT", resultList.size()); // size is always 15 or less
});

那么我怎样才能从一开始就获得全部结果呢?我的目标是在搜索摘要中向用户显示搜索返回了多少结果,但由于当前的实现不会说超过 15 个结果,如果有超过 15 个结果..

【问题讨论】:

    标签: android search android-sqlite android-room android-search


    【解决方案1】:

    又一次,官方文档在另一个基本场景中失败了。我找到的唯一解决方案是运行两个相同的查询;一个是查找结果的总数,另一个是要显示的实际项目列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      相关资源
      最近更新 更多