Как получить значения «Всего» - PullRequest
0 голосов
/ 23 ноября 2018

Это моя структура базы данных Firebase.

Я хочу получить значения "Всего" всех детей "Билла".Я пытался получить данные, но мой код не работает.Вот мой код

 DatabaseReference billReference = FirebaseDatabase.getInstance().getReference().child("Bill");
        billReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                int i = 0;
                for (DataSnapshot ds : dataSnapshot.getChildren()) {
                    fetchCount++;
                    Toast.makeText(getApplicationContext(),""+keys[i],Toast.LENGTH_LONG).show();
                    String temp = ds.child(keys[i]).child("Breakfast").child("11-2018").child("Total").getValue().toString();
                    breakfastBills.add(names[i] + " : " + temp);
                    i++;
                }
                if (fetchCount == 4) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(bill_details_manager.this);
                    builder.setTitle("Bill Details for Breakfast");
                    builder.setItems(breakfastBills.toArray(new String[breakfastBills.size()]), new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {

                        }
                    });
                    progressDialog.dismiss();
                    AlertDialog alertDialog = builder.create();
                    alertDialog.show();

                }

Что не так с этим кодом?

1 Ответ

0 голосов
/ 24 ноября 2018
    DatabaseReference billRef = FirebaseDatabase.getInstance().getReference();
    billRef.child("Bill").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot allValueSnap) {
            for (DataSnapshot snapshot: allValueSnap.getChildren()){
                String key = snapshot.getKey();
                if (key != null) {
                    billRef.child("Bill").child(key).child("Breakfast").addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot keySnapshot) {
                            for (DataSnapshot dateSnapshot:keySnapshot.getChildren()){
                                String keyDate = dateSnapshot.getKey();
                                long totalValue =(long) keySnapshot.child(keyDate).child("Total").getValue();
                                Log.i("totalBreakFast","STotal: "+String.valueOf(totalValue));
                                breakfastBills.add(totalValue);
                            }
                            if(!keySnapshot.exists()){
                                Log.i("totalBreakFast","NoData: ");
                            }
                        }
                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });
                }

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

        }
    });

Этот код получает все значения «Всего».

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