RealmResults <Student>
オブジェクトがあります。 RealmList <Student>
オブジェクトに変換したい。助言がありますか?
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultList.subList(0, realmResultList.size()));
これがあなたのために働くかどうか私に知らせてください。
RealmList <Student> finalList = new RealmList<Student>();
finalList.addAll(yourRealmResults.subList(0, yourRealmResults.size()));
0.87.0以降
- Realmオブジェクトの分離されたコピーを作成するためのRealm.copyFromRealm()が追加されました(#931)。
リストを返すだけで許可List<E extends RealmObject>
RealmResults
はList
インターフェイスを実装し、RealmList
も実装します。
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultsList);
新しいアップデートでは、copyFromRealmメソッドを使用してそうすることができます:
RealmList<Student> finalList = realm.copyFromRealm(resultsAnswers);
RealmResultsは、クエリがオブジェクトのコレクションを提供すると予想される場合に返されます(eg RealmQuery<E>.findAll()
)。それ以外の場合、単一オブジェクトクエリはRealmObjectを返します。
管理対象および管理対象外のオブジェクトRealmResults
はmanagedオブジェクトであり、Realmトランザクションの外部で操作することはできず、それらを作成したスレッドに限定されます。 RealmResults
をRealmList
に変換すると、@ epicpandaforceが指摘したように、データunmanagedになります。つまり、リスト内のオブジェクトはデータベースに接続されなくなり、基本的には正常になります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()
はList
を返すので、次のことも可能です。
_ArrayList<User> users = realm.copyFromRealm(results);
_
Realmにはいくつかの新機能のチェックインドキュメントがあります Realm Documentation
レルムには、結果をリストに変換するために使用できるcopyfromRealm関数があります
RealmList<Student> student=realm.copyfromRealm(Realmresult);
それを行う別の方法:
RealmList<YourClass> dummy = new RealmList<>();
Iterator<YourClass> it = realmResultsList.listIterator();
while (it.hasNext()) {
dummy.add(it.next());
}
コード:
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
@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;
}