J'ai un objet RealmResults <Student>
. Je veux le convertir en objet RealmList <Student>
. Aucune suggestion?
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultList.subList(0, realmResultList.size()));
S'il vous plaît essayez de me laisser savoir si cela fonctionne pour vous.
RealmList <Student> finalList = new RealmList<Student>();
finalList.addAll(yourRealmResults.subList(0, yourRealmResults.size()));
Depuis 0.87.0
- Realm.copyFromRealm () ajouté pour la création de copies détachées d'objets Realm (# 931).
Ce qui permet juste de retourner la liste List<E extends RealmObject>
RealmResults
implémente l'interface List
, de même que RealmList
.
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultsList);
Dans la nouvelle mise à jour, vous pouvez utiliser copyFromRealm method pour le faire:
RealmList<Student> finalList = realm.copyFromRealm(resultsAnswers);
RealmResults est renvoyé si une requête doit donner une collection d'objets (par exemple RealmQuery<E>.findAll()
). Sinon, les requêtes sur un seul objet renverront un RealmObject .
Objets gérés et non gérés RealmResults
sont managed objects, ce qui signifie qu'ils ne peuvent pas être manipulés en dehors des transactions de royaume et sont confinés dans le thread qui les a créés. La conversion de RealmResults
en RealmList
rendra les données unmanaged , comme l'a souligné @epicpandaforce, ce qui signifie que les objets de la liste ne sont plus connectés à la base de données et sont en principe des objets Java normaux qui peuvent être transférés entre les threads et manipulés. .
Pour convertir RealmResults
en RealmList
:
RealmResults<User> results = realm.where(User.class).findAll();
RealmList<Users> users = realm.copyFromRealm(results);
Les modifications apportées à un objet non géré n’affecteront en aucun cas l’original de la base de données, sauf si un realm.copyToRealm(users)
, exécutant le contraire de copyFromRealm()
, est exécuté après. Gardez à l'esprit que RealmLists
peut être géré ou non, car une RealmObject
à partir d'une RealmResult
peut avoir la structure suivante dans laquelle RealmList
est dans ce cas un objet géré:
class User {
int id;
String name;
RealmList<String> petNames;
}
Enfin, copyFromRealm()
renvoie une List
afin qu'il soit également possible de le faire
ArrayList<User> users = realm.copyFromRealm(results);
La documentation d’archivage de nouvelles fonctionnalités de Realm Documentation de Realm } _
Le royaume a la fonction copyfromRealm que nous pouvons utiliser pour convertir le résultat en liste
RealmList<Student> student=realm.copyfromRealm(Realmresult);
Juste une autre façon de le faire:
RealmList<YourClass> dummy = new RealmList<>();
Iterator<YourClass> it = realmResultsList.listIterator();
while (it.hasNext()) {
dummy.add(it.next());
}
Code:
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;
}
}
Voici mon Gist: https://Gist.github.com/jmperezra/9b4708051eaa2686c83ebf76066071ff
@JemshitIskenderov Cela devrait copier pour vous.
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;
}