[英]How to get value of parent node as string?
因此,在上述數據結構中,我想獲得價值Aprilia Caponord 1200
(在圖中標記)。 我有Firebase對Aprilia
(根節點)的引用,可以獲取所有鍵/值對數據。
這是我的代碼
@override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChild()) {
Map<?, ?> value = (Map<?, ?>) child.getValue();
String bike_price = value.get("price").toString();
String image_url = value.get("image_url").toString();
}
}
因此,很明顯,我可以獲得具有鍵/值關系的子節點的所有值。 但是我無法具體獲得父節點的名稱。 那么如何獲取String
格式的父節點的值?
如果我打印child.getValue().toString()
,我會得到JSON值,但對解析JSON不感興趣。 是否有獲取父節點值的特定方法?
{Aprilia Caponord 1200={image_url=____________, price=18.35}.. }
您可能正在DataSnapshot
上尋找getKey()
方法:
mFirebaseRef = new Firebase("https://yours.firebaseio.com");
mFirebaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child: dataSnapshot.getChildren()) {
Log.i("MainActivity", child.getKey());
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Log.e("MainActivity", "onCancelled", firebaseError.toException());
}
});
這里需要注意的幾件事:
getChild()
在代碼中getChildren()
因為沒有方法getChild()
我所知道的。 addChildEventListener
,它在較低級別的節點上提供DataSnapshots
我遇到了這種情況,並解決了以下問題:
final ChildEventListener countsListener = new ChildEventListener() { //for querying how many card created by each user in a specific period
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
/**
* $ROOT/Apirilia/Apirilia_id/CardId/IMG_URL
* $ROOT/Apirilia/Apirilia_id/CardId/PRICE
* ^[key] :[value]
*/
if (dataSnapshot == null) {
Logger.e("!!! dataSnapshot is null");
return;
}
String apirilia_id = dataSnapshot.getRef().getParent().getKey();
Logger.d("... Apirilia_id:" + apirilia_id);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
我很高興能夠伸出援手。
對於那些在firebaseUi中尋找密鑰的人,那么此代碼將適用於您:-
firebaseadapterinstance.getRef(position).getKey();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.