Firebase来自数据库的项目总和

时间:2018-04-10 12:39:08

标签: android arrays firebase firebase-realtime-database

我需要从我的火力库数据库中总结所有项目和价格,但每次我添加项目总和相乘,那么我能做些什么来获得正确的项目总和

cou.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postS: dataSnapshot.getChildren() ){
                ProductVar productVar = postS.getValue(ProductVar.class);
                JumlaKuu += Integer.parseInt(productVar.getTotal());
                ItemsKuu += Integer.parseInt(productVar.getItem());


                Log.d("onVil2: ", String.valueOf(JumlaKuu));

            }
            jumla.setText(String.valueOf(JumlaKuu));
            itemsNumberView.setText(String.valueOf(ItemsKuu));

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

2 个答案:

答案 0 :(得分:1)

尝试这样的事情。!

  final ArrayList<Integer> valuesList = new ArrayList<>();

    cou.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

          int JumlaKuu =0;
          int ItemsKuu =0;

            if (dataSnapshot.exists()) {

                if (valuesList.size() > 0) {
                    valuesList.clear();
                }
                for (DataSnapshot postS : dataSnapshot.getChildren()) {
                    ProductVar productVar = postS.getValue(ProductVar.class);
                    JumlaKuu += Integer.parseInt(productVar.getTotal());
                    ItemsKuu += Integer.parseInt(productVar.getItem());
                    valuesList.add(Integer.parseInt(productVar.getTotal()));

                    Log.d("onVil2: ", String.valueOf(JumlaKuu));

                }


            }



            jumla.setText(String.valueOf( getSum(valuesList)));
            itemsNumberView.setText(String.valueOf(ItemsKuu));

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });


   private int getSum(ArrayList<Integer> valuesList) {
    int sum = -1;

    for (Integer integer : valuesList) {
        sum = integer + sum;
    }

    return sum;

}

答案 1 :(得分:1)

在你的代码中,旧的总和也被添加到新的中,因为当你的addValueEventListener被触发时你没有将sum设置为0。所以,每次你必须设置 JumlaKuu &amp; ItemsKuu 的值为0,如下所示。

cou.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            JumlaKuu = 0;
            ItemsKuu = 0;
            for (DataSnapshot postS: dataSnapshot.getChildren() ){
                ProductVar productVar = postS.getValue(ProductVar.class);
                JumlaKuu += Integer.parseInt(productVar.getTotal());
                ItemsKuu += Integer.parseInt(productVar.getItem());


                Log.d("onVil2: ", String.valueOf(JumlaKuu));

            }
            jumla.setText(String.valueOf(JumlaKuu));
            itemsNumberView.setText(String.valueOf(ItemsKuu));

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });