我尝试过:
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("test1");
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.getValue(String.class);
Log.d("TAG", name);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
但无法正常工作。
答案 0 :(得分:1)
首先创建一个类:
public class MyClass {
private String name;
public MyClass() {
// Default constructor required for calls to DataSnapshot.getValue(MyClass.class)
}
public String getName() {
return name;
}
}
然后按如下所示更新代码:
String myInstance = dataSnapshot.getValue(MyClass.class);
String name = myInstance.getName();
答案 1 :(得分:0)
@Mehmed的答案将非常有用,但是有替代方法。
如果您不想创建Java包装器类,也可以直接从.
访问该属性:
a = r'\frac...'
与您的代码的不同之处在于增加了DataSnapshot
调用,这意味着我们从JSON获取public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("name").getValue(String.class);
Log.d("TAG", name);
}
属性的值。
另一种选择是使用以下方法将侦听器直接附加到child("name")
属性:
name
最后一个示例的优势在于,即使稍后在name
下添加更多子属性,它也仅检索DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("test1");
reference.child("name").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.getValue(String.class);
Log.d("TAG", name);
}
@Override
public void onCancelled(DatabaseError databaseError) { throw databaseError.toException(); }
});
属性。