У меня есть объект RealmResults <Student>
. Я хочу преобразовать его в объект RealmList <Student>
. какие-либо предложения?
Как преобразовать объект RealmResults в RealmList?
Ответ 1
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultList.subList(0, realmResultList.size()));
Ответ 2
Пожалуйста, попробуйте и дайте мне знать, если эта работа для вас.
RealmList <Student> finalList = new RealmList<Student>();
finalList.addAll(yourRealmResults.subList(0, yourRealmResults.size()));
Ответ 3
Так как 0.87.0
- Добавлен Realm.copyFromRealm() для создания отдельных копий объектов Realm (# 931).
Которые позволяют только вернуть список List<E extends RealmObject>
Ответ 4
RealmResults
реализует интерфейс List
, а также RealmList
.
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultsList);
Ответ 5
В новом обновлении вы можете использовать метод copyFromRealm:
RealmList<Student> finalList = realm.copyFromRealm(resultsAnswers);
Ответ 6
@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;
}
Ответ 7
Код:
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
Ответ 8
Еще один способ сделать это:
RealmList<YourClass> dummy = new RealmList<>();
Iterator<YourClass> it = realmResultsList.listIterator();
while (it.hasNext()) {
dummy.add(it.next());
}
Ответ 9
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);