我无法从我的Firebase数据库数据转到Android应用,而Firebase监听器和数据快照文档实际上并没有帮助。
假设我的数据库的节点结构如下:
Contacts-->
John : 1334255
May : 3345777
James : 5799862
Ford : 4574878
如何直接从节点中检索具有键和值的联系人作为字符串,而不必将它们转换为某个对象(不是字符串对象)。
我希望能够将姓名(键)显示为联系人姓名,将数字(他们的值)显示为联系号码。
答案 0 :(得分:0)
tl; dr将它们写为数字以外的其他内容
示例中的值为Long
(整数)。假设他们是电话号码,你可能想要将它们存储为字符串。当您向Firebase写入值时,它会推断出类型和store it as one of the following:
String
(将出现在引号中)Long
(整数)Double
(十进制数)Boolean
(true
或false
没有引号)Map<String, Object>
(有孩子的钥匙)List<Object>
(有孩子的钥匙)在您的情况下,由于您希望在读取时将其视为String
类型,只需将其写为字符串:
如果您要设置客户端代码中的值,请在创建值时使用String
类型。
如果您是从信息中心手动输入的,则可以将它们用引号括起来,也可以使用熟悉的格式(123) 456-7890
等非数字字符。您输入的任何未评估为Long
/ Double
/ Boolean
的值都将被解释为字符串。
答案 1 :(得分:0)
请尝试以下代码:
DatabaseReference contactsRef = FirebaseDatabase.getInstance().getReference().child("Contacts");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.getKey();
String contactNumber = ds.getValue(String.class);
Log.d("TAG", name + ": " + contactNumber);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
contactsRef.addListenerForSingleValueEvent(eventListener);
希望它有所帮助。