2016-04-09 19 views

Antwort

1

Bearbeiten: Ich weiß nicht von einer Methode in Realm, um ein zufälliges Objekt zu erhalten, aber Sie können es tun, wie unten beschrieben.

Eine Möglichkeit, dies zu tun wäre, alle Objekte abzufragen, dann 4 Zufallszahlen (von 0 bis zur Größe von RealmResults) zu generieren und nur Objekte an diesen Positionen zu bekommen, z. Dies ist, wie ein zufälliges Objekt zu erhalten:

// 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

Ja Danke! Aber gibt es eine Methode, um alle Datensätze zu zählen und dann nur zufällige IDs und Abfrage-Datenbank für diese IDs zu machen. Klingt wie ein Plan! –

+0

RealmObjects verfügt nicht über stabile Indizes, die Sie abfragen können. Daher wäre etwas wie oben beschrieben die richtige Vorgehensweise. Beachten Sie, dass alles in Realm lazy-loaded ist, also ist das obige auch ziemlich performant. –

0

Wenn Sie bereit sind, einzigartige Ergebnisse bekommen Sie diese Funktion nutzen zu können, in dieser Funktion kehren wir eine Realmlist von n Elementen aus einem realmresult:

//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))); 
     } 


    } 
Verwandte Themen