[英]How can i retrieve data from such database?
我想檢索值和時間,但我無法到達那里,它一直在日志中為我提供 null 值。 我想知道是否有必要獲得 unique_id,如果有,我該怎么做。
valueRef = myRef.child("user_id").child("ASSETS").child("cash at bank");
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
valueRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Long value = ds.child("values").getValue(Long.class);
Log.d(TAG, "onChildAdded: the value is" + value);
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
我認為這將是解決您的問題的正確方法:
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Long value = ds.child("values").getValue(Long.class);
}
在您的參考資料中,您已經在研究具有唯一ID的新子級並獲取其DataSnapshot
。 您所要做的就是引用它的子項,即values
,並獲取其值。
塔爾·巴德 ( Tal Barder ) 的回答正確。
盡管還有另一種方法:
valueRef = myRef.child("user_id").child("ASSETS").child("cash at bank");
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
valueRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChanged(DataSnapshot dataSnapshot, String s) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Long value = ds.child("values").getValue(Long.class);
Log.d(TAG, "onChildAdded: the value is" + value);
}
}
...
}
});
這仍然使用您的循環,我只是將Listener更改為ValueEventListener
,它將返回包含所有子項的DataSnapshot
。
Tal的回答中提到的一種方法應該是大多數情況下采用的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.