如何在Android Room中使用PagedListAdapter获取总查询计数

问题描述

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

我实现了以下查询,它可以返回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);

除结果总数外,其他所有方法都效果很好。

由于我每次在返回的观察器中收到结果列表时,都将LivePagedListBuildersetInitialLoadSizeHint(15)配置为PageListAdapter,因此列表的大小始终为15(如果查询返回的结果较少,则减小)。第一次为每个唯一列表激发观察者(这意味着每当唯一查询输入返回结果列表时)。列表向下滚动超过15个结果后,根据searchRepository(myQuery).observe(this,resultList -> { Log.i("RESULT",resultList.size()); // size is always 15 or less }); 实现,它会自动加载,但除15之外,我再也没有其他计数。

pip install xverse

那么,如何从一开始就获得全部结果?我的目标是向用户显示搜索摘要中返回的搜索结果数,但是因为当前实现中不会显示超过15个结果。

解决方法

再次,官方文档在另一个基本情况下失败。我发现的唯一解决方案是运行两个相同的查询。一个用于查找结果的总数,另一个用于显示要显示的实际项目列表。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...