Запрос Firebase Android, получить только один результат.Другой результат при нажатии кнопки - PullRequest
0 голосов
/ 26 августа 2018
 Counter4 = Counter2 - Counter1 + 1;
    Query qname = mDatabase.child("variablex").equalTo(variablexofuser).getRef().getParent().limitToFirst(Counter1).limitToLast(Counter4);

Это код, который я пытаюсь использовать.Каждый раз, когда нажимается кнопка, Counter1 увеличивается на 1. Counter2 - это число пользователей в базе данных с переменной x, равной переменной x зарегистрированного пользователя.

 Query qname3 = mDatabase.child("variablex").equalTo(variablexofuser).getRef();
    qname3.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            testref = dataSnapshot.getChildrenCount();
            Counter2 = (int) testref;
        }

Цель состоит в том, чтобы получить первоепользователь, который соответствует критериям (variablex = variablexofuser), затем второй пользователь, который соответствует критериям при повторном нажатии кнопки и т. д.Таким образом, каждый раз при нажатии кнопки получается только один другой результат.Будет ли мой код работать, и если нет, можете ли вы сказать, почему?Может быть, есть более простой или правильный способ достижения этого?Спасибо!

{
  "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"
  }
}

1 Ответ

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

Если вы хотите запросить дочерние узлы местоположения с помощью базы данных Firebase, сначала вы вызываете orderByChild() со свойством, которое вы хотите упорядочить / отфильтровать.

Вы также должны не звонить getRef() в конце запроса, потому что тогда вы просто получите список сообщений нефильтрованный снова.

Итак:

Query qname3 = mDatabase.orderByChild("variablex").equalTo(variablexofuser);
qname3.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        testref = dataSnapshot.getChildrenCount();
        Counter2 = (int) testref;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...