首先,这里是我的数据库结构:
我的目标是从"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(){}
});
发布于 2017-03-26 14:00:29
基本上,您只需完成足够的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) {
}
});
https://stackoverflow.com/questions/43035087
复制相似问题