gpt4 book ai didi

java - 如何获得 Firebase 节点的随机子节点?

转载 作者:行者123 更新时间:2023-11-30 00:38:17 25 4
gpt4 key购买 nike

首先,这是我的数据库结构:

firebase database structure

我的目标是从“DE”节点获取一个随机的 Question 对象以稍后显示它,并且由于没有内置支持查询随机子节点,我必须自己从该迭代器以某种方式获取一个随机对象。

目前,我有这段代码,但对如何将它串在一起感到困惑:

    DatabaseReference questionsRef = FirebaseDatabase.getInstance().getReference().child("questions").child("DE");

questionsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int questionCount = (int) dataSnapshot.getChildrenCount();
int rand = random.nextInt(questionCount);
Iterator itr = dataSnapshot.getChildren().iterator();
}
// onCancelled(){}
});

最佳答案

基本上,您只需执行足够的 itr.next() 操作,直到迭代器位于第 n 位置(其中 n 是来自 nextInt()) 的随机数,然后您可以使用 getValue() 简单地获取您想要的对象,下面的示例应该很好地展示了它:

questionsRef = FirebaseDatabase.getInstance().getReference().child("questions").child("DE");

questionsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int questionCount = (int) dataSnapshot.getChildrenCount();
int rand = random.nextInt(questionCount);
Iterator itr = dataSnapshot.getChildren().iterator();

for(int i = 0; i < rand; i++) {
itr.next();
}
childSnapshot = (DataSnapshot) itr.next();
question = childSnapshot.getValue(Question.class);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

关于java - 如何获得 Firebase 节点的随机子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43035087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com