2017-11-02 15 views
0

レルムでは、findFirst()を使用してデータベースの最初の要素を見つけるオプションがあります。しかし、私はその逆をしたい。私は、私が提供するいくつかの条件に基づいて最後の要素をしたい。レルムデータベースの最後の要素を見つける方法

GamesDetail learnGameDetail = realm.where(GamesDetail.class).equalTo("gameType", getResources().getString(R.string.learn_row)).notEqualTo("currentBadge",0).findFirst(); 

上記のクエリのすべての行はゼロとしてcurrentBadgeを有するであろう:

レルムデータベース内の最初の要素を見つけるために。しかし最後に更新された行には、ある値を持つcurrentBadgeがあります。 currentBadgeが0でない最後の更新された行を見つける必要があります。あなたは

GamesDetail learnGameDetail = realm.where(GamesDetail.class) 
      .equalTo("gameType", getResources().getString(R.string.learn_row)) 
      .notEqualTo("currentBadge",0) 
      .findAll() 
      .last(null); 

を行うことができます

+2

テーブルから最後の20項目を取得するための[Realm.io Androidの最善の方法]の可能な複製](https://stackoverflow.com/questions/28229866/realm-io-android-best-approach-to-get-lastより良い信頼性のために –

+0

、領域にタイムスタンプフィールドを置き、 'order by timestamp desc'でクエリしてから最初に検索してください。 –

+0

無作為の結果セットは、削除後に順序を保持することは保証されません。 – EpicPandaForce

答えて

1

代わりの

GamesDetail learnGameDetail = realm.where(GamesDetail.class) 
     .equalTo("gameType", getResources().getString(R.string.learn_row)) 
     .notEqualTo("currentBadge",0) 
     .findFirst(); 

その挿入順序に注意してくださいを削除した後保たれていないです。一般的にfindAllSorted()を使用することをお勧めします。

関連する問題