Я хочу получить указанные ниже значения и хочу, чтобы они были в счетчике?

Ниже представлено дерево данных из базы данных Firebase, а значения, которые я хочу получить или прочитать, прокомментированы ниже:

"Courses Details" : {
    "Bs-BBA" : {                 /// These are the value that i am trying to read and fetch
      "-MVuhKkfxjHkZmTfsITM" : {
        "Economics" : {
          "courseName" : "Economics",
          "courseSection" : "A",
          "dayOfCourse" : "Tuesday",
          "endingTime" : "1:30Pm",
          "programName" : "Bs-BBA",
          "startingTime" : "12:00Pm"
        }
      }
    },
    "Bscs" : {                /// These are the value that i am trying to read and fetch
      "-MVWl1uq9fA4AlYRfMIv" : {
        "Data structure" : {
          "courseName" : "Data structure",
          "courseSection" : "A",
          "dayOfCourse" : "Monday",
          "endingTime" : "9:30AM",
          "programName" : "Bscs",
          "startingTime" : "8:00AM"
        }
      },
      "-MVY9hGxrp8Lz4JTOefy" : {
        "OOP" : {
          "courseName" : "OOP",
          "courseSection" : "A",
          "dayOfCourse" : "Thursday",
          "endingTime" : "9:00AM",
          "programName" : "Bscs",
          "startingTime" : "8:00AM"
        }
      },
      "-MVYHM0c7cMLersoUl2i" : {
        "Marketing Fundamental" : {
          "courseName" : "Marketing Fundamental",
          "courseSection" : "A",
          "dayOfCourse" : "Thursday",
          "endingTime" : "9:00AM",
          "programName" : "Bscs",
          "startingTime" : "8:00AM"
        }
      }
    },
    "Bsse" : {         /// These are the value that i am trying to read and fetch
      "-MVYHB3X_d4UozbBUDa3" : {
        "Marketing Fundamental" : {
          "courseName" : "Marketing Fundamental",
          "courseSection" : "A",
          "dayOfCourse" : "Thursday",
          "endingTime" : "9:00AM",
          "programName" : "Bsse",
          "startingTime" : "8:00AM"
        }
      }
    }
  }, 

  

И это код, который я написал так далеко для чтения или выборки вышеупомянутых значений:

public void getDataIntoSpinnerForProgramNameFromFirebase()
        {
    
            dbRef = FirebaseDatabase.getInstance().getReference().child("Courses Details");
    
            listener = dbRef.addValueEventListener(new ValueEventListener()
            {
    
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot)
                {
    
                    spinnerForProgramNameArrayList.clear();
    
                    for( DataSnapshot programAndDepartmentName:snapshot.getChildren() )
                    {
    
                        if( programAndDepartmentName.child("programNameAndDepartmentName").exists() )
                        {
                            spinnerForProgramNameArrayList.add(programAndDepartmentName.child("programNameAndDepartmentName").toString());
    
                        }
                    }
    
                    /*for( DataSnapshot departments:snapshot.getChildren() )
                    {
    
                        for( DataSnapshot programNames:departments.getChildren() )
                        {
    
                            if (programNames.child("Program Name").exists())
                            {
    
                                spinnerForProgramNameArrayList.add(programNames.child("Program Name").getValue().toString());
    
                            }
    
                        }
    
                    }*/
                    spinnerForProgramNameArrayAdapter.notifyDataSetChanged();
    
                }
    
                @Override
                public void onCancelled(@NonNull DatabaseError error)
                {

                }
            });
        }
    }

Как я могу получить или прочитать вышеупомянутые значения из базы данных Firebase?

0
Haris Khan 23 Мар 2021 в 21:38

1 ответ

Лучший ответ

Предполагая, что «Сведения о курсах» являются прямым потомком вашей корневой ссылки на базу данных Firebase Realtime, для получения выделенных значений используйте следующие строки кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference coursesDetailsRef = rootRef.child("Courses Details");
coursesDetailsRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            for (DataSnapshot ds : task.getResult().getChildren()) {
                String key = ds.getkey();
                spinnerForProgramNameArrayList.add(key);
                Log.d("TAG", key);
            }
        } else {
            Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});

Результат в логарифме приведенного выше кода будет:

Bs-BBA
Bs-BBA
Base

Добавьте указанные выше значения в «spinnerForProgramNameArrayList».

P.S. Поскольку мы используем get () , убедитесь, что у вас установлена ​​зависимость Firebase Realtime Database как минимум 19.6.0 .

0
Alex Mamo 24 Мар 2021 в 08:10