2016-12-06 156 views
1

我想從Firebase數據庫中獲取報價和作者。目前,該數據庫設置,如:如何從Firebase數據庫獲取隨機對象?

[{ 
     "quotes": [{ 
     "quote":"Some quote.", 
     "author": "Some author." 
     },{ 
     "quote":"Some quote.", 
     "author": "Some author." 
     }] 
    }] 

我要的是一個隨機的報價和作者,並將其存儲在自己的變量顯示在一個TextView。謝謝大家的幫助,即使你只是指出了我的正確方向。

回答

1

不幸的是,Firebase無法從列表中獲取隨機值。但是,您可以獲取列表的大小,並使用Random類生成0到列表大小的int,並將其用作索引,然後在列表中迭代,直到索引隨機生成爲止。

這是你如何能做到這一個例子:

Quote.class的內容:

class Quote { 
    String quote; 
    String author; 
} 

爲獲得一個隨機的報價方法:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("quotes"); 
    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot != null) { 
       Random random = new Random(); 
       int index = random.nextInt((int) dataSnapshot.getChildrenCount()); 
       int count = 0; 
       for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
        if (count == index) { 
         Quote quote = snapshot.getValue(Quote.class); 
         doSomethingWithYourQuote(quote); 
         return; 
        } 
        count++; 
       } 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
+0

我會怎樣在Android Studio v2.2.2中執行此操作嗎?你能展示一些代碼嗎? – Juwdohr

相關問題