在firebase中添加评级总值需要哪种方法?在这里,我已经包含了我的firebase的json结构。需要关注的是ratingstar_review。
据推测,来自第一个列表和第二个列表的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) { }
});
一个例子是有帮助的。谢谢!
答案 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)
的整数获取。