如何使用 Android 房间中的 PagedListAdapter 获取查询总数
How to get the total query count with a PagedListAdapter in Android Room
这遵循上一个问题的逻辑,在这里引用相关代码部分:
我实现了以下查询,它可以 return 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);
除结果总数外,一切正常。
因为每次我在 returned 观察器中收到结果列表时,我都将 LivePagedListBuilder
配置为 setInitialLoadSizeHint(15)
,因此列表的大小始终为 15(如果查询则更小) returns 更少的结果),这是第一次为每个唯一列表触发观察者(这意味着每当一个唯一查询输入 returns 一个结果列表)。一旦列表向下滚动超过 15 个结果,它就会根据 PageListAdapter
实现更自动地加载,但除了 15.
之外,我再也没有得到任何其他计数。
searchRepository(myQuery).observe(this, resultList -> {
Log.i("RESULT", resultList.size()); // size is always 15 or less
});
那么我怎样才能从一开始就得到结果的总数呢?我的目标是向用户显示在搜索摘要中搜索 return 了多少结果,但是如果有超过 15 个结果,当前的实现永远不会说超过 15 个结果..
官方文档再次失败了另一个基本场景。我找到的唯一解决方案是 运行 两个相同的查询;一个用于查找结果总数,另一个用于查找要显示的实际项目列表。
这遵循上一个问题的逻辑,在这里引用相关代码部分:
我实现了以下查询,它可以 return 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);
除结果总数外,一切正常。
因为每次我在 returned 观察器中收到结果列表时,我都将 LivePagedListBuilder
配置为 setInitialLoadSizeHint(15)
,因此列表的大小始终为 15(如果查询则更小) returns 更少的结果),这是第一次为每个唯一列表触发观察者(这意味着每当一个唯一查询输入 returns 一个结果列表)。一旦列表向下滚动超过 15 个结果,它就会根据 PageListAdapter
实现更自动地加载,但除了 15.
searchRepository(myQuery).observe(this, resultList -> {
Log.i("RESULT", resultList.size()); // size is always 15 or less
});
那么我怎样才能从一开始就得到结果的总数呢?我的目标是向用户显示在搜索摘要中搜索 return 了多少结果,但是如果有超过 15 个结果,当前的实现永远不会说超过 15 个结果..
官方文档再次失败了另一个基本场景。我找到的唯一解决方案是 运行 两个相同的查询;一个用于查找结果总数,另一个用于查找要显示的实际项目列表。