java - 我想要在firebase中保存在键值“pqty”中的生产数量的累积?
问题描述
我想在关键“pqty”属性中累积生产数量:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference valuesRef = rootRef.child("alldata").child("pqty");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int sum = o;
for(DataSnapshot ds : dataSnapshot.getChildren()) {
int value = ds.getValue(Integer.class);
sum = sum + value;
}
textview15.setText(String.valueOf(sum));
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
valuesRef.addListenerForSingleValueEvent(eventListener);
我试过了,输出为 0。但我希望输出为 750。
我正在使用素描工具。
解决方案
首先,您将“pqty”属性作为字符串而不是数字存储在数据库中,我认为这是一个非常糟糕的主意。如果您的数据类型是数字,那么您应该这样存储它。现在,要获得所需的总和,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference alldataRef = rootRef.child("alldata");
alldataRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
int sum = 0;
for (DataSnapshot ds : task.getResult().getChildren()) {
String pqty = ds.child("pqty").getValue(String.class);
sum += Integer.parseInt(pqty);
}
Log.d("TAG", "sum= " + sum);
textview15.setText(String.valueOf(sum));
} else {
Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
根据您的屏幕截图,您的 logcat 中的结果将是:
sum= 750
注意事项:
- 在您的“valuesRef”引用中不需要任何“.child("pqty")”调用,因为您需要使用对“.getChildren()”方法的调用循环通过“DataSnapshot”对象,然后获取值“pqty”属性。
- 为了能够对这些值求和,您需要使用Integer.parseInt(String s)方法将该 String 对象解析为一个数字。
- 您无法使用“.getValue(Integer.class)”从数据库中获取字符串值,因为它总是会产生异常。您需要获取它,因为它实际上是存储的。
推荐阅读
- python - 在这种情况下执行替代?
- python - 熊猫数据框 math.isnan 比布尔检查快
- linux - 为什么当我直接打印此代码并存储在变量中后输出会有所不同
- javascript - 当 nav-drawer 和 app-bar 是不同的组件时,在 Vuetify 中绑定抽屉状态
- .htaccess - 在 Filezilla 中打开 .htaccess 文件时如何修复“关键文件传输错误”
- python - 不明白这个意思:n, S = map(int, input().split()) (In Dynamic Programming)
- angular - 如何从 Ionic 中的多个复选框中获取所有值
- jquery - 需要帮助计算段落
- java - 如何将照片保存在图库中
- node.js - 如何使用 multer 或 busboy 使用数据库上传图像并跟踪它们?