Android Studio firebase получает ключ дочернего элемента с определенным значением

Я разрабатываю приложение в Android Studio, и я использую FireBase для хранения данных. Допустим, у меня есть узел с несколькими дочерними элементами, я хотел бы получить ключ дочернего элемента с определенным значением. Например;

Android Studio firebase получает ключ дочернего элемента с определенным значением

Я хотел бы прочитать из узла «languages» ключ дочернего элемента со значением «English», чтобы я получил «eng». Обратите внимание, что заранее я не знаю, что это ключ "eng"!

Кто-нибудь знает способ добиться этого, не импортируя всех детей?

0
0
1 982
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте что-то вроде этого:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("languages");

        ref.orderByValue().equalTo("English").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot snap : dataSnapshot.getChildren()) {
                    String value = snap.getValue(String.class);
                    String key = snap.getKey();
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

Ого, спасибо, я не смог найти это больше нигде. Причина цикла только в том, что есть несколько дочерних элементов со значением 'English', верно?

BramH 30.03.2018 01:35

точно, запрос всегда возвращает все возможные местоположения, поэтому в случае, если он может иметь более одного местоположения, вы можете получить его в цикле

Levi Moreira 30.03.2018 01:36

Отличный ответ Леви! Причина цикла действительно в том, что запрос может соответствовать нескольким результатам, поэтому он возвращает список совпадений. Даже если есть только одно совпадение, результатом будет список из одного. Таким образом, вам всегда будет нужен цикл, даже если есть только один ответ.

Frank van Puffelen 30.03.2018 05:24

Спасибо, @Frank van Puffelen :)

Levi Moreira 30.03.2018 12:38

Ах, спасибо также @Frank van Puffelen, я пытался получить ключ без петли, и тогда он давал мне «languages» вместо «eng». Теперь я понимаю, почему цикл это исправляет.

BramH 30.03.2018 15:12

Другие вопросы по теме