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

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

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

因此,我正在寻找一种基于id数组中的id位置对ContentPage对象进行排序的方法。
我没有把这个RealmResult转换成一个列表,它是一个自动管理的对象,因此在检索之后我不能对它运行一个普通的Comparator
*编辑:如果我尝试在realmresult上使用普通比较器,我将得到:unsupportedoperationexception:replacing和element不受支持。
*编辑2:我的问题似乎不清楚:如果我有这样的ids数组:[3,1,2]。这将进入到上面的.in(ContentPage.FIELD_ID, ids)中。我希望realmresult的顺序是:首先是id为3的项,然后是1,最后是2。
*编辑3:通过在realmresult每次更改时创建一个新的arraylist(使用realmchangelister)并在我的应用程序中进一步使用它来修复。可以对复制的数组进行排序。不理想,只是暂时的解决办法。
List copiedList = new ArrayList<>(getPagesResult);
Collections.sort(copiedList, comparator);

最佳答案

结论:realm不支持。
可以通过在每次更改时从ArrayList创建一个新的RealmResult(使用RealmChangeListener)并在应用程序中使用它来解决此问题。可以对复制的数组进行排序。不是很理想,但可以解决问题。

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

如果您使用的是RealmRecyclerViewAdapter这个方法行不通,那么您需要使用RealmResult来实现这一点。此外,该解决方案还取消了使用RealmResults的其他细节。

关于android - Android Realm :按ID列表排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46221624/

10-09 21:35