说我有Firebase数据库。我想使用Firebase自动生成密钥获取联系对象和每个字段。怎么做?
我想象的是:
Query ref = FirebaseDatabase.getInstance().
getReference("contacts").orderByKey().equalTo("-KTwyKpIifsYAZiZd861");
也许可以这样使用它:(顺便说一句,下面不是实际代码,因为getValue()不存在。它只是代表我正在尝试做的事情。) < / p>
String name = ref.getValue("name");
String city = ref.getValue("city);
// and so on.
那么,如何在Firebase中检索各个字段的值?
答案 0 :(得分:2)
您可以创建Contact
课程:
@IgnoreExtraProperties
public class Contact {
public String address;
public String city;
public String code_name;
public String name;
public Contact() {
}
}
并使用ValueEventListener
获取值:
mDatabase = FirebaseDatabase.getInstance().getReference();
// ...
mDatabase.child("contacts").child("-KTwyKpIifsYAZiZd861").addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Contact contact = dataSnapshot.getValue(Contact.class);
String name = contact.name; // "John Doe"
String city = contact.city; // "Texas"
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
见官方docs。
根据Frank van Puffelen的评论,提问者写的更多细节:
如果有人将来读到这篇文章,并且因为为什么从Firebase检索数据需要一个事件(比如我)而感到困惑,那就是因为当我们从互联网上加载某些内容时,我们无法始终期待它立即加载。这就是为什么我们需要异步处理它,并在此Firebase案例中,使用上面回答的事件。
例如,在附加ValueEventListener()
以检索数据之前,您可以向用户显示加载动画,在调用onDataChange()
或onCancelled()
时禁用该动画。这样,您的用户就会知道正在加载数据以及何时完成数据。