如何从Firebase数据库中获取随机对象?

时间:2016-12-06 22:17:17

标签: android firebase firebase-realtime-database

我正在尝试从Firebase数据库中获取引文和作者。目前,数据库设置如下:

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

我想要的是随机引用和作者,并将它们存储在自己的变量中以显示在TextView中。谢谢大家的帮助,即使你只是指出了我正确的方向。

1 个答案:

答案 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) {

        }
    });