Как получить определенные данные из узла в базе данных Firebase в реальном времени с помощью Android Studio?

#java #android #firebase #firebase-realtime-database

#java #Android #firebase #firebase-realtime-database

Вопрос:

Как я могу получить данные из определенного идентификатора узла в Firebase с помощью Android Studio, где у меня есть действие для ввода идентификатора EditText ? Также у меня есть кнопка, которая при нажатии должна отображать данные под этим идентификатором.

 Firebase DB Format:(As I cant upload image)
--> CEVM
     --Random
       --bKIG89-BX78BkuO
             randomFirst:  "b97kj"
             randomSecond: "87ayI"
             randomThird: "AG9bw"
  

Я приложил приведенный ниже код. Я закончил с загрузкой данных в базу данных, которая имеет

 CEVM-->Random-->bkIG89-BX78BkuO(ID)-->randomOne,randomTwo,randomThree
  

В другом упражнении у меня есть редактирование текста, кнопка и текстовое представление. Пользователю необходимо ввести идентификатор (в приведенном выше примере ‘bkIG89-BX78BkuO’), и при нажатии кнопки должны отображаться данные под этим идентификатором (значения randomOne , randomTwo , randomThree ) TextView .

Для загрузки данных в Firebase:

 public String addRandom(){
    String firstRandom = randomOne.getText().toString();
    String secondRandom = randomTwo.getText().toString();
    String thirdRandom = randomThree.getText().toString();

    String id = databaseRandom.push().getKey();
    randomNumber random = new randomNumber(firstRandom,secondRandom,thirdRandom);
    databaseRandom.child(id).setValue(random);
    String code = id;
    return code;
}
  

Для извлечения: (Я пробовал, но я не уверен, что нужно делать)

 mVerifyBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String dataInput = mSearch.getText().toString();

            reference = FirebaseDatabase.getInstance().getReference().child(dataInput);

        }
    });
}

public void buttonClick(View view){
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            String randomOne = dataSnapshot.child("randomFirst").getValue().toString();
            mViewData.setText(randomOne   randomTwo   randomThree);
        }
  

Я ожидаю, что результатом должно быть значение randomOne , randomTwo и randomThree , но пока ничего не отображается.

Ответ №1:

Если dataInput равно id ( -bKIG89-BX78BkuO ) в базе данных, то вам необходимо изменить ссылку на следующее:

 reference = FirebaseDatabase.getInstance().getReference().child("CEVM").child("Random").child(dataInput);
  

Вы должны пройти через базу данных от верхнего узла до атрибута, где вам нужно получить данные.