我正在尝试从Firebase数据库中获取引文和作者。目前,数据库设置如下:
[{
"quotes": [{
"quote":"Some quote.",
"author": "Some author."
},{
"quote":"Some quote.",
"author": "Some author."
}]
}]
我想要的是随机引用和作者,并将它们存储在自己的变量中以显示在TextView中。谢谢大家的帮助,即使你只是指出了我正确的方向。
答案 0 :(得分: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) {
}
});