【发布时间】:2017-09-14 14:23:00
【问题描述】:
如何确保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。
*EDIT:如果我尝试在 RealmResult 上使用普通比较器,我会得到:UnsupportedOperationException:不支持替换和元素。
*EDIT 2:我的问题似乎不清楚:如果我有这样的 ids 数组:[3,1,2]。这进入上面的.in(ContentPage.FIELD_ID, ids)。我希望 RealmResult 的顺序是:id 为 3 的项目,然后是 1,最后是 2。
*EDIT 3:通过每次更改时从 RealmResult 创建一个新的 ArrayList(使用 Realm ChangeListener)并在我的应用程序中进一步使用它来修复。您可以对这个复制的数组进行排序。不理想,只是一个临时解决方案。
List copiedList = new ArrayList<>(getPagesResult);
Collections.sort(copiedList, comparator);
【问题讨论】:
-
但是 RealmResults 已经有了 .sort() 方法,所以不需要转换为数组,否则我完全迷路了,不能让你好起来 xD
-
:) 如上所示,运行 RealmResult 的 .sort() 方法会给出“UnsupportedOperationException:不支持替换和元素。”