Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/Android领域-保留查询/结果的状态_Java_Android_Database_Kotlin_Realm - Fatal编程技术网

Java/Android领域-保留查询/结果的状态

Java/Android领域-保留查询/结果的状态,java,android,database,kotlin,realm,Java,Android,Database,Kotlin,Realm,在目前正在开发的项目中,我们正在将集成到客户的应用程序中,以提高响应能力,同时处理约20000条记录的庞大数据集。对于屏幕演示,我们正在合并。大多数用例都是读取操作,然后是高级搜索和/或过滤记录的可能性 在我们的一些视图中,最关键的是,从给定类型的所有数据中,只有一部分记录应该显示出来,由后端选择。使用API传递的信息,我们执行初始筛选并设置视图 现在,使用上述技术,是否有一种可读且可维护的方法来存储此预筛选子集或获取其以供进一步参考的查询,以便在清除searchview和/或筛选器后始终可以恢

在目前正在开发的项目中,我们正在将集成到客户的应用程序中,以提高响应能力,同时处理约20000条记录的庞大数据集。对于屏幕演示,我们正在合并。大多数用例都是读取操作,然后是高级搜索和/或过滤记录的可能性

在我们的一些视图中,最关键的是,从给定类型的所有数据中,只有一部分记录应该显示出来,由后端选择。使用API传递的信息,我们执行初始筛选并设置视图

现在,使用上述技术,是否有一种可读且可维护的方法来存储此预筛选子集或获取其以供进一步参考的查询,以便在清除searchview和/或筛选器后始终可以恢复视图的初始状态?或者存储API响应重新应用通过它给出的条件是唯一的方法吗?对查询应用任何新条件似乎都会永久地改变它,对结果应用新查询也是如此。难道不应该有一种方法在旧结果集的基础上为我们自己创建一个新的结果集,但又不干扰后者吗


编辑:我们的应用程序是“双语”的,基于Java和Kotlin的解决方案都受欢迎,如果它们不同的话

正如我们在本周早些时候意识到的,正如@EpicPandaForce在评论中提到的那样,RealmQuery对象在扩展之前不能通过将其分配给备用变量来“快照”,而RealmResults对象则不是这样。因此:

RealmResults<Obj> widerResults = realmInstance.where(Obj.class).in("id", idArray).findAll;
RealmResults<Obj> narrowerResults = widerResults.where().equalTo("flag", true).findAll;
RealmResults widerResults=realmInstance.where(Obj.class).in(“id”,idArray).findAll;
RealmResults slowerresults=widerResults.where().equalTo(“flag”,true).findAll;
将提供两个独立的结果集。更广泛的一个可以根据我强调的用例使用——将其作为进一步子查询的起点。对集合中对象本身的更改仍将反映在两个集合中


为所有迷失的灵魂提供了答案,如果他们像我们一样陷入困境

您是否使用@Index column进行搜索?如果您执行了
realmResults.where()
,则可以构造其他查询参数,并调用
findAll()
将创建新结果。如果您保留旧的
realmResults
,那么这些条件就不会丢失。是的,@EpicPandaForce,过了一段时间,我们意识到事实上是这样的。一定是RealmQuery对象的行为让我们相信解决方案不会这么简单。此外,我们还没有发现一个在线示例真正尝试重新创建我们的用例,即我们的搜索机制不是基于整个对象集,而是基于一个子集。