计算节点 Firebase 的值总和
Calculate Sum of values from node Firebase
我正在获取所有数量的价格。但我不知道如何将它们全部添加并放在一个字符串下。有人可以帮忙
FirebaseDatabase mFirebaseDatabase = FirebaseDatabase.getInstance();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference databaseReference = mFirebaseDatabase.getReference().child("cart").child(uid);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot: snapshot.getChildren()) {
Log.d("dasdasdasdad", String.valueOf(dataSnapshot));
String quantityprice = (String) dataSnapshot.child("quantityprice").getValue();
Log.d("quantityprice", String.valueOf(quantityprice));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
在这里,我在日志中获取所有数量价格值
即:- 130,55,150
但我不知道如何将它们全部添加到一个字符串下。
任何帮助将不胜感激。
这个我也试过了
DatabaseReference databaseReference = mFirebaseDatabase.getReference().child("cart").child(uid);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot: snapshot.getChildren()) {
Log.d("dasdasdasdad", String.valueOf(dataSnapshot));
Integer total = 0;
String quantityprice = (String) dataSnapshot.child("quantityprice").getValue();
Log.d("quantityprice", String.valueOf(quantityprice));
int price = Integer.valueOf(quantityprice);
total =+ price;
Log.d("total",total); }
但总计始终显示不同。
这是日志
D/quantityprice: 130
D/total: 130
D/quantityprice: 55
D/total: 55
D/quantityprice: 150
D/total: 150
要解决此问题,请使用以下代码行:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference productsRef = db.child("card").child(uid);
productsRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
double total = 0.00;
for (DataSnapshot ds : task.getResult().getChildren()) {
String quantityPrice = ds.child("quantityprice").getValue(String.class);
total += Double.parseDouble(quantityPrice);
}
Log.d("TAG", "total: " + total);
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
logcat 中的结果将是:
total: 335.00
解决这个问题的关键是将数据库中的String
值解析为double
。请记住,如果您需要数字,最好将它们作为数字存储在数据库中,并且 而不是 作为字符串值。
我正在获取所有数量的价格。但我不知道如何将它们全部添加并放在一个字符串下。有人可以帮忙
FirebaseDatabase mFirebaseDatabase = FirebaseDatabase.getInstance();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference databaseReference = mFirebaseDatabase.getReference().child("cart").child(uid);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot: snapshot.getChildren()) {
Log.d("dasdasdasdad", String.valueOf(dataSnapshot));
String quantityprice = (String) dataSnapshot.child("quantityprice").getValue();
Log.d("quantityprice", String.valueOf(quantityprice));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
在这里,我在日志中获取所有数量价格值 即:- 130,55,150
但我不知道如何将它们全部添加到一个字符串下。 任何帮助将不胜感激。
这个我也试过了
DatabaseReference databaseReference = mFirebaseDatabase.getReference().child("cart").child(uid);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot: snapshot.getChildren()) {
Log.d("dasdasdasdad", String.valueOf(dataSnapshot));
Integer total = 0;
String quantityprice = (String) dataSnapshot.child("quantityprice").getValue();
Log.d("quantityprice", String.valueOf(quantityprice));
int price = Integer.valueOf(quantityprice);
total =+ price;
Log.d("total",total); }
但总计始终显示不同。
这是日志
D/quantityprice: 130 D/total: 130
D/quantityprice: 55 D/total: 55
D/quantityprice: 150 D/total: 150
要解决此问题,请使用以下代码行:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference productsRef = db.child("card").child(uid);
productsRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
double total = 0.00;
for (DataSnapshot ds : task.getResult().getChildren()) {
String quantityPrice = ds.child("quantityprice").getValue(String.class);
total += Double.parseDouble(quantityPrice);
}
Log.d("TAG", "total: " + total);
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
logcat 中的结果将是:
total: 335.00
解决这个问题的关键是将数据库中的String
值解析为double
。请记住,如果您需要数字,最好将它们作为数字存储在数据库中,并且 而不是 作为字符串值。