簡體   English   中英

如何在 android 工作室中從 firebase 檢索多個子節點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM