如何从Firebase数据库获取随机对象?
问题描述:
我想从Firebase数据库中获取报价和作者。目前,该数据库设置,如:如何从Firebase数据库获取随机对象?
[{
"quotes": [{
"quote":"Some quote.",
"author": "Some author."
},{
"quote":"Some quote.",
"author": "Some author."
}]
}]
我要的是一个随机的报价和作者,并将其存储在自己的变量显示在一个TextView。谢谢大家的帮助,即使你只是指出了我的正确方向。
答
不幸的是,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) {
}
});
我会怎样在Android Studio v2.2.2中执行此操作吗?你能展示一些代码吗? – Juwdohr