簡體   English   中英

訪問 Android 的 Firebase 中的父節點和子節點

[英]Accessing parent and child nodes in Firebase for Android

我想從 Firebase 實時數據庫中訪問這些子節點數據,並將它們顯示在我的 Android Studio 的應用程序中。 我該如何為此編寫代碼?

在此處輸入圖像描述

最好將 Frank 要求的內容添加到您的問題中,但由於您是新手,我會嘗試為您編寫一些代碼。 因此,為了讀取AgeEmailGender的值,您必須創建一個引用並為其附加一個偵聽器。 假設F1EQ...v302是登錄用戶的 UID,讀取數據的代碼應該是這樣的:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = db.child("All Users").child(uid);
uidRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            DataSnapshot snapshot = task.getResult();
            String age = snapshot.child("Age").getValue(String.class);
            String email = snapshot.child("Email").getValue(String.class);
            String gender = snapshot.child("Gender").getValue(String.class);
            Log.d("TAG", age + "/" + email + "/" + gender);
        } else {
            Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
        }
    }
});

logcat 中的結果將是:

18/penny@gm.com/Female

除此之外,將Age屬性設置為數字而不是字符串更有意義。 如果您以后需要它作為字符串,您可以簡單地將其轉換為您的應用程序代碼。

編輯:

如果你想從所有用戶那里獲取數據,你確實需要一個循環:

DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference allUsersRef = db.child("All Users");
allUsersRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            for (DataSnapshot ds : task.getResult().getChildren()) {
                String age = ds.child("Age").getValue(String.class);
                String email = ds.child("Email").getValue(String.class);
                String gender = ds.child("Gender").getValue(String.class);
                Log.d("TAG", age + "/" + email + "/" + gender);
            }
        } else {
            Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
        }
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM