2 回答
TA贡献1848条经验 获得超6个赞
在您的代码中,您正在设置值,您需要使用 getter 检索值。
尝试以下操作:
databaseReference.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
String name = user.getStrName();
String score = user.getStrScore();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
但是,首先您需要将值添加到数据库示例中:
User user = new User();
user.setStrName("my_name");
user.setStrScore("20");
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");
ref.push().setValue(user);
注意setValue():
此外,您可以将您自己的类的实例设置到此位置,前提是它们满足以下约束:
类必须有一个不带参数的默认构造函数
该类必须为要分配的属性定义公共 getter。反序列化实例时,没有公共 getter 的属性将设置为其默认值
您需要向 POJO 类添加一个默认构造函数,并且该类中public User(){}的字段名称应与数据库中的字段名称匹配。所以把它String strName, strScore;改成这个String name, score;并再次生成getter和setter。
TA贡献1871条经验 获得超8个赞
您可以使用全局配置文件节点,而不是在每个节点中创建配置文件,并在其中存储配置文件数据及其 UID,这将使您更容易获取单个用户的详细信息。
-profile
-UID1
-name
-score
-UID2
-name
-score
检索时,您可以使用 getCurrentUser.getUid() 检索每个用户的数据:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
databaseReference.child("users").child("profile").child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = new User();
user = dataSnapshot.getValue(User.class);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
添加回答
举报