我想检索值和时间,但我无法到达那里,它一直在日志中给我一个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) {
}
});
}
});
答案 0 :(得分:1)
我认为这将是解决问题的正确方法:
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Long value = ds.child("values").getValue(Long.class);
}
在您的参考文献中,您已经在查看具有唯一ID且获得DataSnapshot
的新孩子。你所要做的就是引用它的孩子,即values
,并获得它的价值。
答案 1 :(得分:0)
虽然还有另一种方式:
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);
}
}
...
}
});
这仍然使用你的循环,我只是将监听器更改为ValueEventListener
,它将返回包含所有孩子的DataSnapshot
。
Tal's answer中提到的那个应该是大多数情况下采用的方法。