RealmList в RealmObject. Как сохранить порядок?

У меня есть RealmObject с RealmList в качестве одного из его полей.

public class ToyMaker extends RealmObject {
    private RealmList<Toy> toyList;
    ...
}

public class Toy extends RealmObject {
    ...
}
  1. Будет ли сохраняться порядок Toy в toyList при записи в Realm и обратном чтении?

  2. Если порядок не сохраняется Realm, как я могу добиться этого вручную, учитывая, что

    О. Я не могу добавить дополнительные поля (например, индекс) в класс ToyToy может быть много ToyMaker, поэтому индексное поле в Toy невозможно.

    B. Порядок в том порядке, в котором Toy добавляется к toyList.


person Weizhi    schedule 09.10.2016    source источник


Ответы (1)


Заказан RealmList, поэтому случай №1 правильный. Просто добавьте их в нужном вам порядке, и этот порядок сохранится.

Однако в целом порядок не гарантируется, поэтому создание 2 объектов в Царстве не подразумевает порядок:

realm.createObject(Person.class, 1);
realm.createObject(Person.class, 2);

// Doing this is not guaranteed to return Person:1
realm.where(Person.class).findAll().first()

// Always use a sort in queries if you want a specific order
realm.where(Person.class).findAllSorted("id", Sort.ASCENDING).first();
person Christian Melchior    schedule 09.10.2016
comment
Мне не удалось найти эту информацию в документации по области, думаю, было бы здорово, если бы вы добавили ее в документацию. Спасибо! - person Weizhi; 10.10.2016
comment
Я использую общедоступные объекты ‹E extends RealmModel› List‹E› copyToRealmOrUpdate(Iterable‹E›) для хранения списка в области, но порядок списка не сохраняется. Как я могу сохранить порядок списка? Спасибо! - person Liar; 27.08.2018
comment
@EpicPandaForce Есть ли способ обновить порядок после добавления элементов, а не удалять и повторно добавлять? - person Nolan Amy; 31.08.2018
comment
В RealmList? Неа. Когда я хотел, чтобы вещи были упорядочены, я обычно сохранял поле с именем rank, но, конечно, это не сработало бы, если ваш элемент находится в нескольких списках. - person EpicPandaForce; 01.09.2018