web-dev-qa-db-ja.com

RealmResultsオブジェクトをRealmListに変換する方法は?

RealmResults <Student>オブジェクトがあります。 RealmList <Student>オブジェクトに変換したい。助言がありますか?

23
Ezio123
RealmList <Student> results = new RealmList<Student>();

results.addAll(realmResultList.subList(0, realmResultList.size()));
20
ChaturaM

これがあなたのために働くかどうか私に知らせてください。

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

finalList.addAll(yourRealmResults.subList(0, yourRealmResults.size()));
13
Ralphilius

0.87.0以降

  • Realmオブジェクトの分離されたコピーを作成するためのRealm.copyFromRealm()が追加されました(#931)。

リストを返すだけで許可List<E extends RealmObject>

13
ar-g

RealmResultsListインターフェイスを実装し、RealmListも実装します。

RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultsList);
9
ahmadalibaloch

新しいアップデートでは、copyFromRealmメソッドを使用してそうすることができます:

RealmList<Student> finalList = realm.copyFromRealm(resultsAnswers);
2
Gagan Deep

RealmResultsは、クエリがオブジェクトのコレクションを提供すると予想される場合に返されます(eg RealmQuery<E>.findAll()。それ以外の場合、単一オブジェクトクエリはRealmObjectを返します。

管理対象および管理対象外のオブジェクト
RealmResultsmanagedオブジェクトであり、Realmトランザクションの外部で操作することはできず、それらを作成したスレッドに限定されます。 RealmResultsRealmListに変換すると、@ epicpandaforceが指摘したように、データunmanagedになります。つまり、リスト内のオブジェクトはデータベースに接続されなくなり、基本的には正常になりますJavaオブジェクト。スレッド間で転送して操作できます。

RealmResultsRealmListに変換するには:

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

アンマネージオブジェクトへの変更は、realm.copyToRealm(users)の反対を実行するcopyFromRealm()が後に実行されない限り、データベース内の元のオブジェクトに影響を与えません。 RealmListsRealmObjectは、この場合のRealmResultが管理対象オブジェクトである以下の構造を持つことができるため、RealmListを管理または管理解除できることに注意してください。

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

最後に、copyFromRealm()Listを返すので、次のことも可能です。

_ArrayList<User> users = realm.copyFromRealm(results);
_
0
leonapse

Realmにはいくつかの新機能のチェックインドキュメントがあります Realm Documentation

レルムには、結果をリストに変換するために使用できるcopyfromRealm関数があります

RealmList<Student> student=realm.copyfromRealm(Realmresult);
0
sanjay

それを行う別の方法:

RealmList<YourClass> dummy = new RealmList<>();
Iterator<YourClass> it = realmResultsList.listIterator();
while (it.hasNext()) {
      dummy.add(it.next());
}
0
Dimas Mendes

コード:

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
Chema

@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
Ruben H. Baca