我已經開始使用Realm了,我很好奇如果可以通過嵌套屬性對RealmList對象進行排序。如何使用嵌套屬性對RealmList對象進行排序?
我有一些ListModel的對象:
public class ListModel extends RealmObject {
@Required
private String itemName;
...
private RealmList<ItemModel> items;
...
}
ItemModel是:
public class ItemModel extends RealmObject {
private TagModel tag;
...
private boolean isBought = false;
@PrimaryKey
private long created;
...
}
TagModel是:
public class TagModel extends RealmObject {
@PrimaryKey
private String tagName;
...
private CategoryModel category;
...
}
和CategoryModel是:
public class CategoryModel extends RealmObject {
@PrimaryKey
private int categoryType;
...
}
所以,我真正需要的是有這樣的事情:
RealmResults<ItemModel> sortedItems= realm.where(ListModel.class)
.equalTo("created", created)
.findFirst().getItems().where().findAllSorted("isBought", Sort.ASCENDING, "tag.category.categoryType", Sort.ASCENDING, "tag.tagName", Sort.ASCENDING);
是否有可能以某種方式實現這一目標?就目前而言,據我所知,根據我的需要,不可能使用以下結構"tag.category.categoryType"
。
作爲一個臨時的解決方案,我想下面的辦法:
ListModel listModel = realm.where(ListModel.class)
.equalTo("created", created)
.findFirst();
List<ItemModel> items = listModel.getItems();
Collections.sort(items, new Comparator<ItemModel>() {
@Override
public int compare(ItemModel lhs, ItemModel rhs) {
// here some sorting logic
}
});
,但我不知道這是一個正確的做法。
對不起,境界不支持孩子的財產排序,現在:(見https://github.com/realm/realm-java/issues/709,你的副作用臨時解決方案是排序需要在Realm事務中運行,並且在Realm中實際的'RealmList''項目將在排序後被更改。也許你想要創建一個新的集合並對其進行排序。 – beeender