Android Firebase Получить значения одного узла по дочернему поиску - PullRequest
0 голосов
/ 02 июня 2018

Здравствуйте. Это моя база данных. Я пытаюсь сделать запрос

https://i.stack.imgur.com/Ldexn.png

Я пытаюсь получить значения дочернего элемента "02", выполнив поиск, где "name" ="Кафе"

        category.orderByChild("name").equalTo("Cafe").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            Category catx = dataSnapshot.getValue(Category.class);

            Toast.makeText(AdminCategories.this, "xx"+catx.getName(), Toast.LENGTH_SHORT).show();

            admCatId.setText(dataSnapshot.getKey());
            admCatName.setText(catx.getName());
            admCatImage.setText(catx.getImage());
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

Но я получаю нулевое значение, используя этот код ..

Я получаю желаемый результат при использовании

category.child("02").addValueEventListener(new .....)

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

1 Ответ

0 голосов
/ 02 июня 2018

Когда вы выполняете запрос к базе данных Firebase, потенциально может быть несколько результатов.Таким образом, снимок содержит список этих результатов.Даже если есть только один результат, снимок будет содержать список из одного результата.

Ваш onDataChange должен обработать этот список, чего в настоящее время нет.Самое простое изменение - это итерация по dataSnapshot.getChildren():

public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
  for (DataSnapshot categorySnapshot: dataSnapshot.getChildren()) {
    Category catx = categorySnapshot.getValue(Category.class);

    Toast.makeText(AdminCategories.this, "xx"+catx.getName(), Toast.LENGTH_SHORT).show();

    admCatId.setText(categorySnapshot.getKey());
    admCatName.setText(catx.getName());
    admCatImage.setText(catx.getImage());
  }
}

Также см .:

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