来自firebase的评级总价值之和

时间:2017-10-14 18:53:57

标签: android firebase-realtime-database sum

在firebase中添加评级总值需要哪种方法?在这里,我已经包含了我的firebase的json结构。需要关注的是ratingstar_review。

enter image description here

据推测,来自第一个列表和第二个列表的ratingstar_review的总和将是3 + 5 = 8。所以我希望得到总和8.下面是从firebase检索数据以存储在评级栏上以供显示的代码。

    starRef.child("number_rating").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot != null && dataSnapshot.getValue() != null) {
                float rating = Float.parseFloat(dataSnapshot.getValue().toString());
                star.setRating(rating);
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) { }
    });

一个例子是有帮助的。谢谢!

1 个答案:

答案 0 :(得分:3)

这样的事情可以解决问题:

starRef.child("Ratings").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int total = 0, 
            count = 0;
        for (DataSnapshot child: dataSnapshot.getChildren()) {
            int rating = dataSnapshot.child("ratingstar_review").getValue(Integer.class);
            total = total + rating;
            count = count + 1;
        }
        star.setRating(total);
    }
    @Override
    public void onCancelled(DatabaseError databaseError) { 
        throw databaseError.toException(); // don't ignore errors
    }
});

与您的代码的主要区别:

  • 由于/Ratings下有多个子节点,因此代码需要遍历这些子节点。
  • 要获取每个孩子的值,您会找到包含getChild("ratingstar_review")的正确属性,然后将其作为带getValue(Integer.class)的整数获取。