2016-03-05 15 views
9

私はRealm Android - RealmResultsをオブジェクトの配列に変換するにはどうすればよいですか?

は私が何を持っているん

RealmResults<ArticleList> results = realm.where(ArticleList.class).equalTo("category", "CategoryName").findAll(); 

を使用して行うのフェッチArticleList[]

に結果を変換し、私が何をしたいオブジェクト

public class ArticleList extends RealmObject { 

@PrimaryKey 
private String id; 
private String title; 
private String subtitle; 
private String image; 
private String category; 

} 

は、レルムおよびそれらに起因フェッチしている必要があり次にオブジェクトの配列を取得するには?

+3

「RealmResults」を直接使用しないのはなぜですか?なぜあなたはデータを保持するために別のデータ構造が必要ですか? – pskink

+0

リストビューには 'RealmBaseAdapter'を使用してください。 – EpicPandaForce

答えて

9

RealmResultsは、(RealmResults継承チェーンに注意してください)の方法もあります。次のようにして、これらを使用することができます。

ArticleList[] resultArray = (ArticleList[]) results.toArray(); 

それとも

ArticleList[] resultArray = results.toArray(new ArticleList[results.size()]); 

を理想的には、あなたの代わりにRealmResultsを使用したいと思います。これにより、をデータに加えて、Listのすべての利便性を得ることができます。

+0

コンパイラは互換性のない型について苦情を言います:(https://s.mail.ru/oRPdhBqpwCrp/img-2016-03-05-15-14-37.png –

+0

@AlexeyK Adam Sが正しいですか?代わりに 'RealmResults'を使います。 'ListView'のアダプタに必要です、' Cursor'を受け入れる 'android.widget.CursorAdapter'のように' RealmResults'を受け入れるアダプタを見つけ出す(または書く) – pskink

+0

'toArray –

21

のJavaのArrayListに変換する最も簡単な:代わりに配列に変換しようとしているの

ArrayList<People> list = new ArrayList(mRealm.where(People.class).findAll()); 
+0

Peopleの要素がバックグラウンドスレッドで削除された場合 – EpicPandaForce

+0

開発者は、レルムトランザクションでそのオブジェクトを同時に削除する必要があります。 – Farhan

+0

Yep 、またはレルム変更リスナーで配列を再構築する – EpicPandaForce

2

、あなたは同期で、あなたの結果を維持するためにhttps://github.com/realm/realm-android-adaptersから抽象RealmBaseAdapterクラスを拡張する必要があります。

レルムは、RecyclerViewまたはListViewを使用して自動更新リストを作成する方法の例として、これらのクラスを提供します。

+1

@CarlSmithいいえ、それは廃止されたコンストラクタを削除したばかりで、RealmBaseAdapterはまだすぐそこhttps://github.com/realm/realm-android-adapters/blob/master/adapters/src/main/java/io/realm/RealmBaseAdapter.java – EpicPandaForce

+0

私の間違いをおかけして申し訳ありません、@EpicPandaForce。コメントを削除しました。 –

10
List<ArticleList> unmanagedList = realm.copyFromRealm(results); 

となります。

関連する問題