Не может получить все количество под дочерним

Это логическая ошибка, я получаю 7дети считают под stocks, но выводит только четыре дети считают

OUTPUT: "4 Rubber Duck"

Я использую textView.setText(allDuck " Rubber Duck"); и Вывод не весь Rubber Duck. Суммарный выход 7 должен быть не четыре, а четыре. Это структура данных и код в проблеме, но я не знаю, в чем проблема, не могли бы вы помочь мне найти логическую ошибку: я думаю, что firebase путает чтение моего uid,

Database
    DuckCompany
       SALES
          WireHouse
             Inventory
                  RubberDUCK
                     DuckID
                        axRGznal3nkhxsDax // this is uid
                                stocks
                                   -LEeeeeeeeeeeeeeeee  // this is id 
                                                redValue:"71"
                                   -LFffffffffffffffff 
                                                redValue:"71"
                                   -LGggggggggggggggg 
                                                redValue:"71"
                        cpsGGGGNxQQQOWqh
                                stocks 
                                   -LAaaaaaaaaaaaaaa 
                                                redValue:"71"
                                   -LBbbbbbbbbbbbbbb 
                                                redValue:"71"
                                   -LCccccccccccccc 
                                                redValue:"71"
                                   -LDddddddddddddd
                                                redValue:"71"

.

ref
   .child("DuckCompany")
   .child("SALES")
   .child("WireHouse")
   .child("Inventory")
   .child("RubberDUCK") 
   .addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) { 
       for (DataSnapshot uids : dataSnapshot.child("DuckID").getChildren()) {

          uidKeys = uids.getKey();

          if (uidKeys != null) {
             int allDuck = (int) dataSnapshot.child("DuckID").child(uidKeys).child("stocks").getChildrenCount();                            
          }
       }
       textView.setText(allDuck " Rubber Duck");

    }

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

     }
});
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы перебираете все (2) ключа в DuckID и получаете количество дочерних элементов в stock для каждого из них, но вы никуда не добавляете эти суммы, вы просто перезаписываете предыдущее значение.

Попробуйте это вместо этого:

    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

        int allDuck = 0;

        for (DataSnapshot uids : dataSnapshot.child("DuckID").getChildren()) {

            String uidKeys = uids.getKey();

            if (uidKeys != null) {
                allDuck += (int) dataSnapshot.child("DuckID").child(uidKeys).child("stocks").getChildrenCount();                            
            }
        }
        textView.setText(allDuck " Rubber Duck");
    }

Я попробую ваш код и вернусь снова. спасибо за ответ :-)

Bill Gates 07.02.2019 10:57

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