我刚刚使用Firebase添加了几个值: 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) {
}
});
答案 0 :(得分: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 :(得分:-1)
使用ValueEventListner,不要使用childEventListner, 按照下面的行...这里“UI和UI.class”意味着... java类名...你把getter和setter放在哪里... 这里我将int值存储在firebase中...所以需要将int值转换为String并将文本设置为text viewholder ...如果你不存储在int ..than你可以使用String
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) {
}
});
确保int total value为零... 三江源