In meiner Anwendung frage ich einige Daten aus Realm über die untere Modellklasse. Danach sortiere ich die resultierenden Daten mit realmResults.sort("point")
. aber das Ergebnis ist nicht wie erwartet.Realm für Android - RealmResult.sort() String-basierte Sortierung tun?
Modellklasse
public class FreeItem extends RealmObject {
private int itemId;
private int point;
private int freeQty;
private int freeItemId;
// geters setters
}
Code abfragen
if(realm==null||realm.isClosed()){
realm = Realm.getInstance(config);
}
PromotionPlan plan = realm.where(PromotionPlan.class).equalTo("id", planId).findFirst();
if(plan!=null) {
RealmResults<QtyDiscount> realmResults = plan.getDiscounts().where().equalTo("itemId", productId).findAll();
realmResults.sort("point");
return realmResults.subList(0,realmResults.size());
}
return new ArrayList<>();
Vor Art (Debug-Werte)
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}]
Nach Art ist es nach wie vor gleich.
Also habe ich versucht, eigenen Sortierprozess mit unter Code schreiben, aber es erzeugt eine Ausnahme und sagen, da sie Realm-Objekte nicht ersetzen können.
Irgendwelche Hilfe?
Code Sortierung
List<FreeItem> result = realmResults.subList(0, realmResults.size());
Collections.sort(result, new Comparator<FreeItem>() {
@Override
public int compare(FreeItem lhs, FreeItem rhs) {
if(lhs.getPoint()>rhs.getPoint())return 1;
if(lhs.getPoint()<rhs.getPoint())return -1;
return 0;
}
});
Exception
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)
Beste Antwort zum Sortieren von RealmResults. –