![](/img/trans.png)
[英]How to get values from different child in firebase realtime database?
[英]How to get the key of a child node in Firebase Realtime Database after choosing a child randomly
我想獲取 Firebase Realtime Database 中子節點的key,也就是UID
。 我隨機選擇一個子節點,現在我想獲取該子節點的密鑰,以便我可以對其進行進一步的操作。
databaseReferencePickers.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
try {
int pickerCount = (int) dataSnapshot.getChildrenCount();
Random random = new Random();
int rand = random.nextInt(pickerCount);
Iterator itr = dataSnapshot.getChildren().iterator();
for(int i = 0; i <= rand; i++) {
itr.next();
}
pickerDetails = itr.next().toString();
ObjectMapper oMapper = new ObjectMapper();
map = oMapper.convertValue(itr.next(), Map.class);
//pickerUID = Objects.requireNonNull(map.get("key")).toString();
pickerUID = dataSnapshot.getKey();
Toast.makeText(OrderPickupActivity.this,pickerUID,Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(OrderPickupActivity.this, e.toString(), Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
你能幫我嗎? 每當我吐司“PickerUID”的值時,我得到的值為null 。
我想從選擇器部分檢索密鑰。
如果您想通過在Pickers
節點上附加監聽器來獲取隨機uid
,請使用以下代碼行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference pickersRef = rootRef.child("Pickers");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> uids = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String uid = ds.getKey();
uids.add(uid);
}
String randomUid = new Random().nextInt(uids.size());
//Do what you need to do with this random uid
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(TAG, "Error: ", task.getException()); //Don't ignore errors!
}
};
pickersRef.addListenerForSingleValueEvent(valueEventListener);
看,您必須使用getChildren()
方法遍歷DataSnapshot
object 才能獲得結果。 但是,這並不是最好的解決方案,因為您下載了整個Pickers
節點,以便獲得單個隨機 ID。 如需更滿意的解決方案,請同時查看我在以下帖子中的回答:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.