我想从Firebase数据库中读取所有问题的数据。例如对于问题1,我想将问题,答案和答案存储到三个变量中。我当前正在做的事情就是这里。
private FirebaseDatabase database=FirebaseDatabase.getInstance();
private DatabaseReference
quizRef=database.getReference("Quiz").child("Questions");
quizRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds:dataSnapshot.getChildren())
{
ModelClass modelClass=new ModelClass();
modelClass.setQues(ds.child("question1").getValue(ModelClass.class).getQues());
modelClass.setAns(ds.child("question1").getValue(ModelClass.class).getAns());
textViewQuestionText.setText(modelClass.getQues());
}
}
@Override
public void onCancelled(DatabaseError error) {
textViewQuestionText.setText("Error occurred");
}
});
答案 0 :(得分:2)
经过测试。您不必检查像question1,question2等之类的键
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference reference = database.getReference("Quiz/Questions");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds: dataSnapshot.getChildren()) {
ModelClass modelClass = (ds.getValue(ModelClass.class));
modelClass.getAns();
modelClass.getQes();
// fetch any key value pair
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我建议使用Firebase生成的哈希键,而不要使用自己的问题(如问题1,问题2等)
答案 1 :(得分:1)
您可以使用以下代码直接使用Firebase数据库中的数据:
DatabaseReference q1Ref = quizRef.child("question1");
q1Ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String question = dataSnapshot.child("ques").getValue(String.class);
String answer = dataSnapshot.child("ans").getValue(String.class);
int ansBy = dataSnapshot.child("answeredBy").getValue(Integer.class);
// now you can do what you want with the values stored in the variables
}
@Override
public void onCancelled(DatabaseError error) {
textViewQuestionText.setText("Error occurred");
}
});
答案 2 :(得分:0)
要从数据库读取或写入数据,您需要一个DatabaseReference实例:
private DatabaseReference mDatabase;
// ...
mDatabase = FirebaseDatabase.getInstance().getReference();
要在路径上读取数据并侦听更改,请使用addValueEventListener()或addListenerForSingleValueEvent()方法将ValueEventListener添加到DatabaseReference。
您可以使用onDataChange()方法读取给定路径上内容的静态快照,因为它们在事件发生时就已经存在。
有关更多信息,您可以refer to firebase docs