首先,这是我的数据库结构:
我的目标是从“DE”节点获取一个随机问题对象以便稍后显示它,并且由于没有查询随机子项的内置支持,我必须自己从该迭代器以某种方式获取一个随机对象。
目前,我有这段代码,但对如何将其串在一起感到困惑:
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) {
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)