Как преобразовать объект RealmResults в RealmList?

У меня есть объект RealmResults <Student>. Я хочу преобразовать его в объект RealmList <Student>. какие-либо предложения?

+18
источник поделиться
9 ответов
RealmList <Student> results = new RealmList<Student>();

results.addAll(realmResultList.subList(0, realmResultList.size()));
+14
источник

Пожалуйста, попробуйте и дайте мне знать, если эта работа для вас.

RealmList <Student> finalList = new RealmList<Student>();

finalList.addAll(yourRealmResults.subList(0, yourRealmResults.size()));
+13
источник

Так как 0.87.0

  • Добавлен Realm.copyFromRealm() для создания отдельных копий объектов Realm (# 931).

Которые позволяют только вернуть список List<E extends RealmObject>

+12
источник

RealmResults реализует интерфейс List, а также RealmList.

RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultsList);
+9
источник

В новом обновлении вы можете использовать метод copyFromRealm:

RealmList<Student> finalList = realm.copyFromRealm(resultsAnswers);
+2
источник

@JemshitIskenderov Это должно скопировать для вас.

public RealmList<Student> convertResultToList(RealmResult<Student> realResultsList){
    RealmList <Student> results = new RealmList<Student>();

    for(Student student : realResultsList){
       results.add(copy(student));
    }
}

private Student copy(Student student){
    Student o = new Student();

    o.setCreated(student.getCreated());
    o.setModified(student.getModified());
    o.setDeleted(student.getDeleted());
    o.setName(student.getName());
    //List more properties here
    return o;
}
0
источник

Код:

public class RealmCollectionHelper {

     public static <C extends RealmModel> RealmList<C> mapperCollectionToRealmList(Collection<C> objects){
         if (objects == null){
             return null;
         }
         RealmList<C> realmList = new RealmList<>();
         realmList.addAll(objects);

         return realmList;
     }
}

Здесь мой смысл: https://gist.github.com/jmperezra/9b4708051eaa2686c83ebf76066071ff

0
источник

Еще один способ сделать это:

RealmList<YourClass> dummy = new RealmList<>();
Iterator<YourClass> it = realmResultsList.listIterator();
while (it.hasNext()) {
      dummy.add(it.next());
}
0
источник

RealmResults возвращается, если ожидается, что запрос даст коллекцию объектов (например, RealmQuery<E>.findAll()). В противном случае запросы с одним объектом возвращают RealmObject.

Управляемые и неуправляемые объекты
RealmResults являются управляемыми объектами, что означает, что они не могут быть обработаны за пределами транзакций Realm и ограничены в потоке, который их создал. Преобразование RealmResults в RealmList сделает данные неуправляемыми, как указано в @epicpandaforce, что означает, что объекты в списке больше не подключены к базе данных и в основном являются нормальными объектами Java, которые могут передаваться между потоками и манипулировать ими.

Чтобы преобразовать RealmResults в RealmList:

RealmResults<User> results = realm.where(User.class).findAll();
RealmList<Users> users = realm.copyFromRealm(results);

Изменения в неуправляемом объекте никоим образом не будут влиять на оригинал в базе данных, если после этого не будет выполняться realm.copyToRealm(users), противоположное copyFromRealm(). Имейте в виду, что RealmLists можно управлять или неуправляемым, так как RealmObject из RealmResult может иметь следующую структуру, в которой RealmList в этом случае является управляемым объектом:

class User {
  int               id;
  String            name;
  RealmList<String> petNames;
}  

Наконец, copyFromRealm() возвращает a List, поэтому также можно сделать

ArrayList<User> users = realm.copyFromRealm(results);
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос