在我的应用程序中,我正在查询关于模型类下面的某些数据。 然后我使用realmResults.sort("point")对结果数据进行排序。 但结果不符合预期。Realm for Android - RealmResult.sort()做基于字符串的排序?
Model类
public class FreeItem extends RealmObject {
private int itemId;
private int point;
private int freeQty;
private int freeItemId;
// geters setters
}
查询代码
if(realm==null||realm.isClosed()){
realm = Realm.getInstance(config);
}
PromotionPlan plan = realm.where(PromotionPlan.class).equalTo("id", planId).findFirst();
if(plan!=null) {
RealmResults realmResults = plan.getDiscounts().where().equalTo("itemId", productId).findAll();
realmResults.sort("point");
return realmResults.subList(0,realmResults.size());
}
return new ArrayList<>();
之前排序(调试值)
FreeItem = [{itemId:61},{point:12},{freeQty:1},{freeItemId:61}]
FreeItem = [{itemId:61},{point:120},{freeQty:16},{freeItemId:61}]
FreeItem = [{itemId:61},{point:24},{freeQty:3},{freeItemId:61}]
FreeItem = [{itemId:61},{point:60},{freeQty:8},{freeItemId:61}]
排序后,它是和以前一样。
所以我试图用下面的代码编写自己的排序过程,但它会生成一个异常并说,因为它们是领域对象无法替代的。
任何帮助?
分类编码
List result = realmResults.subList(0, realmResults.size());
Collections.sort(result, new Comparator() {
@Override
public int compare(FreeItem lhs, FreeItem rhs) {
if(lhs.getPoint()>rhs.getPoint())return 1;
if(lhs.getPoint()
return 0;
}
});
异常
java.lang.UnsupportedOperationException: Replacing and element is not supported.
at io.realm.RealmResults$RealmResultsListIterator.set(RealmResults.java:826)
at io.realm.RealmResults$RealmResultsListIterator.set(RealmResults.java:757)
at java.util.AbstractList$SubAbstractList$SubAbstractListIterator.set(AbstractList.java:232)
at java.util.Collections.sort(Collections.java:1888)