2016-04-09 19 views

cevap

1

Düzenleme: Rasgele bir nesne almak için Realm'de bir yöntem bilmiyorum, ancak aşağıda açıklandığı gibi yapabilirsiniz.

Bunu yapmanın bir yolu, tüm nesneleri sorgulamak, ardından 4 rastgele sayı üretmek (0'dan RealmResults boyutuna kadar) oluşturmak ve yalnızca bu konumlarda nesneleri almak olabilir. Bu işlevde bir realmresult gelen n elemanlı bir Realmlist dönmek, bu işlevi kullanabilirsiniz benzersiz sonuçlar elde etmek isteyen varsa

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

Evet teşekkürler! Ancak tüm kayıtları saymak için bir yöntem var ve daha sonra sadece bu kimlikleri için rasgele kimlikleri ve sorgulama veritabanı yapmak. Bir plan gibi görünüyor! –

+0

RealmObjects, sorgulayabileceğiniz sabit bir dizine sahip değil, bu nedenle yukarıdaki gibi bir şey yapmanın doğru yolu olacaktır. Realm'deki her şeyin tembel yüklü olduğunu unutmayın, bu nedenle yukarıdakiler de oldukça iyi performans gösteriyor. –

0

: bu bir rasgele nesne almak için nasıl

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


    }