![](/img/trans.png)
[英]How to get specific data of child node by searching from firebase database in android studio - java?
[英]How to get the child from firebase in android studio?
在 Firebase 實時數據庫中,我想向用戶顯示已下訂單的列表,為此,我需要獲取在訂單中創建的所有子項及其值。
這是我到目前為止所做的代碼
FirebaseDatabase.getInstance().getReference().child("Users").child("Customer").child(userID).child("Order").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Users usersnapshot = snapshot.getValue(Users.class);
if(usersnapshot!=null){
mCustomerinfo.setVisibility(View.VISIBLE);
Map<String, Object> map = (Map<String, Object>) snapshot.getValue();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
public void Item( Map<String,Object> map){
// TODO:To check all the item in order and show it to the user
}
如果您只需要“Egg”屬性的值,請創建一個指向確切屬性的引用並獲取它的值,如以下代碼行所示:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference eggRef = rootRef.child("Users").child("Customer").child(uid).child("Order").child("Egg");
productsRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
String value = task.getResult().getValue(String.class);
Log.d("TAG", value);
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
logcat 中的結果將是:
10
如果您希望用戶有多個訂單,您應該考慮使用如下所示的架構:
Firebase-root
|
--- Users
|
--- $uid
|
--- orders
|
--- $pushedId
| |
| --- //Order details
|
--- $pushedId
|
--- //Order details
所以你需要通過調用 push() 方法來區分每個訂單。
編輯:
根據您最后的評論:
我想知道在訂單中獲取多個子項的代碼(假設 Egg:10 Onion:5 等等),那么我該如何獲取呢?
這是您的代碼:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference orderRef = rootRef.child("Users").child("Customer").child(uid).child("Order");
orderRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
String key = ds.getKey();
String value = ds.getValue(String.class);
Log.d("TAG", key + ":" + value);
}
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
logcat 中的結果將是:
Egg:10
Onion:5
結果在
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.