Получить UID в списке путем поиска дочерних значений Firebase Android - PullRequest
0 голосов
/ 27 августа 2018
{
  "Mp6FLLdcSeXpfGPwP5i0ZBNZxd63" : {
    "Age" : "20",
    "Full name" : "Mike",
    "Intent" : "Both",
    "Reward" : "Nothing ",
    "Variablex" : "one name",
    "imageuri" : "images/Mp6FLLdcSeXpfGPwP5i0ZBNZxd63.jpeg"
  },
  "fWJcCPF16dUMKn1Sxz01VjF9Kgq2" : {
    "Age" : "19",
    "Full name" : "Other guy",
    "Intent" : "Looking for help",
    "Reward" : "nothing ",
    "Variablex" : "one name",
    "imageuri" : "images/fWJcCPF16dUMKn1Sxz01VjF9Kgq2"
  }
}

Это моя база данных.Я хочу получить всех пользователей с одинаковой переменной x.Но я хочу только идентификатор, родительский узел.Я хочу в основном построить массив, который содержит все идентификаторы пользователей, чьи дочерние значения variablex одинаковы.А затем используйте этот массив для вызова одного пользователя за раз, получения идентификатора, выполнения других задач с ним и т. Д.

public void othershit() {

    Query qname3 = mDatabase.child("Variablex").orderByChild("Variablex").equalTo(userinput);
    qname3.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            GenericTypeIndicator<List<String>> t = new GenericTypeIndicator<>();
            List users = dataSnapshot.getValue(t);
            textView8.setText(users.get(0).toString());
        }

Это вызывается кнопкой, но каждый раз происходит сбой.Также у меня есть три пользователя с той же переменнойx.Структура та же самая, это немного устаревшая версия моей базы данных, но по сути она такая же.

1 Ответ

0 голосов
/ 27 августа 2018

Попробуйте использовать

dataSnapshot.getKey();

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

Редактировать -

Допустим, ваш родительский узел для всех данных - это пользователи

{
  "users" :{
"Mp6FLLdcSeXpfGPwP5i0ZBNZxd63" : {
    "Age" : "20",
    "Full name" : "Mike",
    "Intent" : "Both",
    "Reward" : "Nothing ",
    "Variablex" : "one name",
    "imageuri" : "images/Mp6FLLdcSeXpfGPwP5i0ZBNZxd63.jpeg"
  },
  "fWJcCPF16dUMKn1Sxz01VjF9Kgq2" : {
    "Age" : "19",
    "Full name" : "Other guy",
    "Intent" : "Looking for help",
    "Reward" : "nothing ",
    "Variablex" : "one name",
    "imageuri" : "images/fWJcCPF16dUMKn1Sxz01VjF9Kgq2"
  }
}
}

Итак, вот что вам нужно сделать, чтобы получить список всех идентификаторов, которые соответствуют требуемому

    List<String> userIds = new Arraylist<>();

        Query qname3 = mDatabase.child("users").child("Variablex").orderByChild("Variablex").equalTo(userinput)..addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
          userIds.add(dataSnapshot.getKey());
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

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