Как преобразовать 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
![введите описание изображения здесь]()
Как я могу его преобразовать?
Любая помощь или предложение были бы очень оценены.
Ответы
Ответ 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)