gpt4 book ai didi

android - Realm 安卓 : order by id-list

转载 作者:搜寻专家 更新时间:2023-11-01 09:32:07 25 4
gpt4 key购买 nike

如何确保 RealmResult 是根据 ids 整数数组的排序顺序排序的?

   public static RealmResults<ContentPage> getContentPages(Realm realm, Integer[] ids) {

return realm.where(ContentPage.class)
.in(ContentPage.FIELD_ID, ids).findAll();
}

所以我正在寻找一种方法来根据 ids 数组中的 id 位置对 ContentPage 对象进行排序。

我没有将此 RealmResult 转换为列表,它是一个自动管理的对象,因此我无法在检索后对其运行普通的 Comparator

*编辑:如果我尝试在 RealmResult 上使用普通比较器,我将得到:UnsupportedOperationException:不支持替换和元素。

*EDIT 2:我的问题似乎不清楚:如果我有这样的 ids 数组:[3,1,2]。这进入上面的 .in(ContentPage.FIELD_ID, ids)。我希望 RealmResult 的顺序是:首先是 id 为 3 的项目,然后是 1,最后是 2。

*编辑 3:通过每次更改时从 RealmResult 创建一个新的 ArrayList(使用 Realm ChangeListener)并在我的应用程序中进一步使用它来修复。您可以对这个复制的数组进行排序。不理想,但临时解决方案。

List copiedList = new ArrayList<>(getPagesResult);
Collections.sort(copiedList, comparator);

最佳答案

结论:Realm不支持。

可以通过每次更改时从 RealmResult 创建一个新的 ArrayList 来解决这个问题(使用 RealmChangeListener)并在应用程序。您可以对这个复制的数组进行排序。不理想,但可行的解决方案。

List copiedList = new ArrayList<>(getPagesResult);
Collections.sort(copiedList, comparator);

如果您使用的是 RealmRecyclerViewAdapter,这将不起作用,您需要 RealmResult。此外,此解决方案消除了使用 RealmResults 的其他优点。

关于android - Realm 安卓 : order by id-list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46221624/

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