我正在尝试从Firebase实时数据库中读取一些值。 我的结构如下:
和我的代码来检索值(“葡萄酒和美食”):
databaseReference.child("test").child("event_name").child("drinks")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Object dataSnapshotObject = dataSnapshot.getValue(String.class);
if(dataSnapshotObject != null){
Toast.makeText(content, "Event Name: " + dataSnapshotObject.toString(), Toast.LENGTH_LONG).show();
}else
Toast.makeText(context,"null",Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
});
但是,我只得到一个空响应作为值。我可能做错了什么?
答案 0 :(得分:0)
您可以将.child("drinks")
从链中删除(然后放入下面的代码中,如下面的代码所示),并且无论如何要将dataSnapshotObject
更改为String
,则应该检索放在String
中。
类似这样的东西:
String value = dataSnapshot.child("drinks").getValue(String.class);
还要检查您的databaseReference
是否看起来像这样。
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
答案 1 :(得分:0)
您可以使用addListenerForSingleValueEvent
来获取值
代码示例:
FirebaseDatabase.getInstance().getReference().child("test").child("event_name").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
HashMap hashUser = (HashMap) dataSnapshot.getValue();
if (hashUser != null) {
String Drinks = hashUser.get("drinks").toString();
//Toast.makeText(this, Drinks , Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});