не может получить весь счет под ребенком - PullRequest
0 голосов
/ 07 февраля 2019

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

OUTPUT: "4 Rubber Duck"

Я использую textView.setText(allDuck " 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) {

     }
});

1 Ответ

0 голосов
/ 07 февраля 2019

Вы перебираете все (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");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...