2017-10-20 167 views
0

我剛纔添加使用火力地堡幾個值: Screen from Firebase如何總結/聚合值在火力地堡

我想總結一下這些數據並顯示15的日誌中的結果。

這裏是我的代碼:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     DatabaseReference beersRef = FirebaseDatabase.getInstance().getReference("Rank"); 

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

     score.add(9); 
     score.add(2); 
     score.add(4); 

     beersRef.push().setValue(score); 


     beersRef.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 


      } 

      @Override 
      public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onChildRemoved(DataSnapshot dataSnapshot) { 

      } 

      @Override 
      public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

回答

1

要做到這一點,請使用以下代碼。這是簡單的方法。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference rankRef = rootRef.child("Rank"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     int sum = 0; 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      int value = ds.getValue(Integer.class); 
      sum =+ sum + value; 
     } 
     Log.d("TAG", sum); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
rankRef.addListenerForSingleValueEvent(eventListener); 

你的輸出將是:15

-1

使用ValueEventListner和,不使用childEventListner, 按照下面的線......這裏的 「用戶界面和UI.class」 是指... Java類名..你把getter和setters ... 這裏我存儲int值在firebase中...所以需要將int值轉換爲字符串並將文本設置爲文本viewholder ...如果你不存儲在int ..比你可以用字符串

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

         int total = 0; 

         for (DataSnapshot ds : dataSnapshot.getChildren()) { 

          UI result = ds.getValue(UI.class); 
          total = total + result.getMrp_final(); 

         } 

         String tl = total + ""; 
         tv_total.setText(tl); 

        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 

        } 
       }); 

make肯定int總值爲零... thankyou