2017-02-01 7 views
0

自分のユーザーをレルムに保存しました。私は、ユーザーを照会するとき、私は、このオブジェクトを取得する:Androidレルム:レルムからコレクションIDを取得するオブジェクト

User{id=0, hairColor=Red, [email protected][16,17]} 

私がお気に入りの曲のリストをしたい場合は、レルムがリストを取り戻すすることが容易になります:

mUser.getFavoriteSongs(); 

しかし、私は取得したいのですがユーザーのお気に入りのソートIDの配列これにより、int []としてバンドルに簡単に渡すことができます。

これはRealmで可能ですか?

答えて

1

私はあなたに二つの選択肢を提案します:

  1. が曲のリストを反復処理し、IDのリストを返すの責任ヘルパーを作成します。

    class SongHelper { 
    
        public static List<Integer> getSongIds(List<Song> songs) { 
         List<Integer> songIds = new ArrayList<>(); 
         for(Song song : songs) 
          songIds.add(song.getId()); 
    
         return songIds; 
        } 
    
    } 
    
  2. オーバーライドgetFavoriteSongs方法と、それはList<Integer>代わりList<Song>の返還またはユーザーに、このための追加のメソッドを作成します。

オプション1はよりエレガントです。モデルクラスは常にきれいに保つ必要があります。言い換えれば、ビジネスロジックなしで属性、ゲッター、セッターを宣言するだけです。

+0

私はループでこれを行う方法を知っていますが、Realmがこれを達成するためのヘルパーメソッドを提供しているかどうかを知る必要があります。可能であれば40 +個のヘルパーメソッドを書き出すのではなく、 – jwBurnside

+0

レルムを使用することはできませんが、RxJavaを使用すると、より柔軟な方法で反復処理を行うことができます。 https://realm.io/docs/java/latest/#rxjava。それは私が言うことができるすべてです! – Rafa0809

関連する問題