2016-12-06 126 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