gpt4 book ai didi

java - 如何在android studio中从firebase检索多个子节点

转载 作者:行者123 更新时间:2023-12-01 17:30:30 26 4
gpt4 key购买 nike

我正在尝试获取与数据库中特定用户相关的数据,并将其返回到 android studio 中的用户屏幕。 firebase 中的数据采用如下格式:

"studentNumber" : {
"1234567" : {
"CS320" :{
"Lab 1" : "80%",
"Lab 2" : "90%"
},
"CS255" :{
"Lab 1" :"30%"
}
},
"6234567" : {
"CS320" :{
"Lab 1" : "70%",
"Lab 2" : "100%"
},

诸如此类。

我正在尝试获取所有数据/子节点,即与一名单个学生相关的所有模块、后续实验和后续成绩返回到 android studio 的屏幕,但是,到目前为止,我只能获取返回到的数据android studio 中的控制台而不是应用程序屏幕。

这是我用来获取数据的代码。

  databaseReference = FirebaseDatabase.getInstance().getReference("User").child("0000");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.v("E_Value","Data :" +dataSnapshot.getValue());
}
}

任何帮助都会非常感谢。

最佳答案

我没有测试代码,但大纲应该如下所示。

您应该获取一个键并调用一个函数来获取该值以及与其相关的后续节点及其值。

 databaseReference = FirebaseDatabase.getInstance().getReference("User").child("0000");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
String studentKey = dataSnapshot1.getKey();
fetchDetails(studentKey);
}
}
}

public void fetchDetails(String studentKey) {
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("User").child("0000").child(studentKey);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
String courseKey = dataSnapshot1.getKey(); //this should print CS320
fetchDetailsOfCourse(courseKey);
}
}
}
}

public void fetchDetailsOfCourse(String courseKey) {

System.out.System.out.println("Course key: " + courseKey);
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("User").child("0000").child(studentKey).child(courseKey);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String lab1 = dataSnapshot.child("lab1").getValue(String.class);
String lab2 = dataSnapshot.child("lab2").getValue(String.class);

System.out.println("Lab1 value: " + lab1); //this should get the values for lab1
System.out.println("Lab2 value: " + lab2); //this should get the values for lab2

}
}
}
}

关于java - 如何在android studio中从firebase检索多个子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61130952/

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