![](/img/trans.png)
[英]How to Fetch child nodes without using unique ids using Query from Firebase database in Android Studio?
[英]How to retrieve mulitple child nodes from firebase in android studio
我正在嘗試將與數據庫中特定用戶相關的數據返回到 android 工作室中的用戶屏幕。 firebase 中的數據格式如下:
"studentNumber" : {
"1234567" : {
"CS320" :{
"Lab 1" : "80%",
"Lab 2" : "90%"
},
"CS255" :{
"Lab 1" :"30%"
}
},
"6234567" : {
"CS320" :{
"Lab 1" : "70%",
"Lab 2" : "100%"
},
諸如此類。
我正在嘗試將所有數據/子節點,即與一個單一學生相關的所有模塊、后續實驗室和后續成績返回到 android 工作室的屏幕,但是,到目前為止,我只能將數據返回到控制台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());
}
}
任何幫助都會非常感謝。
我沒有測試代碼,但是大綱應該是這樣的。
您應該獲取一個鍵並調用 function 以獲取值以及與其相關的后續節點及其值。
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
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.