gpt4 book ai didi

android - 如何在 Realm 的查询中设置 LIMIT?

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:21 25 4
gpt4 key购买 nike

我已经完成了查询限制的研发,但没有成功。有一种方法可以使用子列表对 Realm 中的数据进行分页,但没有成功。它在其中显示重复值。

这是我尝试的分页。

 RealmResults<Person> mPersonData=RealmUtils.getAllPersonWithTagsDescending(); 
if (mPersonData != null) {
int startPos=getAllPerson.size()-1;
int endPos=mPersonData.size()-1;
List<Person> newPersonData=mPersonData.subList(startPos,endPos);
getAllPerson.addAll(newPersonData);
mAdapter.notifyDataSetChanged();
}

我做错了什么?

最佳答案

如果您使用 RealmResults<T>,就没有理由在 Realm 中使用分页直接,因为 RealmResults 中的元素被延迟评估,并且在您调用 .get(i) 之前不在内存中.

意思是,在您直接索引元素之前,查询不会执行和计算元素。这意味着,它们不在内存中。 RealmResults<T>列表实际上并不包含元素,它只知道如何找到它们。

因此,没有 LIMIT在 Realm 。

请注意,如果我没记错的话,重新计算两个 RealmResults findAllSorted 未返回的可以有不同的顺序(如果发生删除)。如果无论如何顺序都必须相同,则考虑 rank属性,并按 findAllSorted("rank", Sort.ASCENDING) 订购.

如果你真的想要分页,你应该有排名参数,然后你可以创建一个查询

realm.where(SomeClass.class)
.greaterThanOrEqualTo("rank", pageSize*pageIndex + 0)
.lessThan(SomeClassFields.RANK, pageSize*pageIndex + pageSize)
.findAllSorted(SomeClassFields.RANK, Sort.ASCENDING);

此外,您应该考虑使用 RealmRecyclerViewAdapter 而不是 here :

compile 'io.realm:android-adapters:1.3.0' // for Realm 0.89.0 to Realm 2.3.0

compile 'io.realm:android-adapters:2.1.0' // for Realm 3.0.0+    

compile 'io.realm:android-adapters:3.0.0' // for Realm 5.0.0+    

RealmRecyclerViewAdapter为您处理“加载新数据”,除了设置初始 RealmResults 之外,您无需执行任何操作即可使其正常工作。 .



一旦与 Paging Architecture Component 正确集成,我实际上必须更改此答案,谁知道呢?我有一个实验 here你可以看看它是否适合你。

关于android - 如何在 Realm 的查询中设置 LIMIT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38873402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com