Подтвердить что ты не робот

Как преобразовать RealmResults <Object> в список <Object>

У меня есть RealmResults, которые я получаю от Realm, например

RealmResults<StepEntry> stepEntryResults = realm.where(StepEntry.class).findAll();

Теперь я хочу преобразовать RealmResults<StepEntry> в ArrayList<StepEntry>

Я попробовал

 ArrayList<StepEntry> stepEntryArray = new ArrayList<StepEntry>(stepEntryResults));

но элемент в моем ArrayList не является моим объектом StepEntry, это StepEntryRealmProxy введите описание изображения здесь

Как я могу его преобразовать? Любая помощь или предложение были бы очень оценены.

4b9b3361

Ответ 1

Чтобы с нетерпением прочитать каждый элемент из Царства (и, следовательно, сделать все элементы в списке неуправляемыми, вы можете это сделать):

 List<StepEntry> arrayListOfUnmanagedObjects = realm.copyFromRealm(realmResults);

Но у вас, как правило, нет абсолютно никаких причин делать это, если только вы не хотите сериализовать объекты с GSON (в частности, потому что он читает данные поля с отражением, а не с получателями), потому что Realm был разработан таким образом, что список предоставляет слушателя изменений, позволяя вам поддерживать ваш интерфейс в актуальном состоянии, просто наблюдая за изменениями, внесенными в базу данных.

Ответ 2

Ответ от @EpicPandaForce работает хорошо. Я попытался таким образом оптимизировать производительность своего приложения, и я обнаружил, что следующее немного быстрее. Еще один вариант для людей, которые предпочитают скорость:

RealmResults<Tag> childList = realm.where(Tag.class).equalTo("parentID", id).findAll();
Tag[] childs = new Tag[childList.size()];
childList.toArray(childs);
return Arrays.asList(childs);

Ответ 3

В Котлине:

var list : List<Student>: listof()
val rl = realm.where(Student::class.java).findAll()

// subList return all data contain on RealmResults
list = rl.subList(0,rl.size)