This is the structure of my database:
我想获取所有结果值,但是在能够在结果中使用getValue()之前,我需要先循环教师和检查子。我该如何同时循环教师和应试的孩子?
这是我的代码,但是我不知道如何到达Exam子并再次循环以获取结果值。
dbOutcome.child("sample_list").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds: dataSnapshot.getChildren()){
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
答案 0 :(得分:1)
您可以使用模型类来检索它。 制作模型类并在其中获取数据
public class Exam {
pirvate String outcomes;
// create constructor and getter setter
}
创建教师课程
public class Faculty {
List<Exam> exams
// create constructor and getter setter
}
从onDataChange的快照中获取数据,就像这样
public void onDataChange(DataSnapshot dataSnapshot) {
List<Faculty> faculties = (ArrayList<Faculty>) dataSnapshot.getValue();
}
答案 1 :(得分:0)
我想获得所有结果值
假设sample_list
节点是Firebase根的直接子节点,要解决此问题,您需要两次使用getChildren()
方法:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("sample_list");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
for(DataSnapshot ds : dSnapshot.getChildren()) {
String outcome = ds.child("outcome").getValue(String.class);
Log.d("TAG", outcome);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(valueEventListener);
您的logcat中的输出将是:
pass
fail
pass
fail