2016-04-09 9 views

答えて

1

編集:ランダムオブジェクトを取得するにはRealmのメソッドがわかりませんが、以下で説明するように行うことができます。

これを行う1つの方法は、すべてのオブジェクトを照会し、4つの乱数(0からRealmResultsのサイズまで)を生成し、それらの位置にオブジェクトを取得することです。この機能では、我々はrealmresultからn個の要素のRealmListを返し、あなたはこの機能を使用することができますユニークな結果を得るために喜んでいる場合

// get realm 
Realm realm = Realm.getDefaultInstance(); 

// get all objects 
RealmResults<YourObject> results = realm.where(YourObject.class).findAll(); 

// random generator 
Random r = new Random(System.nanoTime()); 

// generate first random number to be from the range [0..number of objects) 
int firstRandomNumber = r.nextInt(results.size()); 

// get first object from results at position randomly generated above 
YourObject firstRandomObject = results.get(firstRandomNumber); 
+0

そう、ありがとう!しかし、すべてのレコードの数を取得し、このIDのランダムIDとクエリデータベースを作成する方法はありますか?計画のようだ! –

+0

RealmObjectsには、照会できる安定したインデックスがありませんので、上記のようなものが正しい方法です。 Realmのすべてが遅延ロードされていることに注意してください。 –

0

:これは1つの乱数オブジェクトを取得する方法である

//Realm result 
    RealmResults<Question> questionRealmResults = QuestionManager.getAllQuestions(); 
    //Realm List to be returned 
    RealmList<Question> realmList = new RealmList<>(); 
    //List of unique random questions ids 
    List<Integer> questionIds = new ArrayList<>(); 
    //Random Instance to generate Questions Ids 
    Random random = new Random(); 

    int randomNumber; 

    while (questionIds.size() < limit) { 
     randomNumber = random.nextInt(questionRealmResults.size()); 
     if (!questionIds.contains(randomNumber)) { 
      questionIds.add(randomNumber); 
      realmList.add(new TestQuestion(questionRealmResults.get(randomNumber))); 
     } 


    } 
関連する問題