android - 获取值(value) Firebase

标签 android firebase firebase-realtime-database

我有一个 firebase 结构如下:

Orders
  HALa1r5un1gkcddZzzDRQWxPCwm2 //This is the UserUID
    1515589315695                //This is This is the order code
      total : 4000                  //This is the total order amount

    1515592859285
      total : 2000

如何获取以上两个订单的总金额。结果将是:6000

我还有一个问题。收到 6000 个结果后,如何将 6000 转换为 60?我想从千位变成十位。
示例:1000 -> 10

最佳答案

假设 Orders 节点是您的 Firebase 根的直接子节点并且 total 被声明为 int 类型,要解决此问题,请使用以下代码:

String uid = firebaseAuth.getCurrentUser().getUid();

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Orders").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        int sum = 0;
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            int total = ds.child("total").getValue(Integer.class);
            sum = sum + total;
        }
        Log.d("TAG", sum);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(eventListener);

输出将是:6000

要将 6000 转换为 60,只需将 sum 除以 100,或者查看 Java NumberFormat

关于android - 获取值(value) Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48189548/

相关文章:

java - 记住不同屏幕上的按钮点击

android - 在 Android 上使无边框图像按钮变小

java - 如何为android ZBar QrCode Reader自定义CameraView

swift - FIRInstanceID.instanceID().token() 和 Messaging.messaging().fcmToken 有什么区别?

java - 当 Firebase 中的值发生更改时,Sharedpreferences 值会更新

android - 如何在 Flutter 中直接调用电话

java - 单击 AlertDialog 的“肯定”按钮时获取 'E/AndroidRuntime: Error reporting crash android.os.TransactionTooLargeException'

javascript - 无法从 firebase 对象读取所有数据

ios - Swift 3.0 的 Firebase 语法

firebase-realtime-database - 冷热 AngularFire 可观察对象