2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
在您的代碼中,您正在設(shè)置值,您需要使用 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) {
}
});
但是,首先您需要將值添加到數(shù)據(jù)庫示例中:
User user = new User();
user.setStrName("my_name");
user.setStrScore("20");
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");
ref.push().setValue(user);
注意setValue():
此外,您可以將您自己的類的實(shí)例設(shè)置到此位置,前提是它們滿足以下約束:
類必須有一個(gè)不帶參數(shù)的默認(rèn)構(gòu)造函數(shù)
該類必須為要分配的屬性定義公共 getter。反序列化實(shí)例時(shí),沒有公共 getter 的屬性將設(shè)置為其默認(rèn)值
您需要向 POJO 類添加一個(gè)默認(rèn)構(gòu)造函數(shù),并且該類中public User(){}的字段名稱應(yīng)與數(shù)據(jù)庫中的字段名稱匹配。所以把它String strName, strScore;改成這個(gè)String name, score;并再次生成getter和setter。

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用全局配置文件節(jié)點(diǎn),而不是在每個(gè)節(jié)點(diǎn)中創(chuàng)建配置文件,并在其中存儲(chǔ)配置文件數(shù)據(jù)及其 UID,這將使您更容易獲取單個(gè)用戶的詳細(xì)信息。
-profile
-UID1
-name
-score
-UID2
-name
-score
檢索時(shí),您可以使用 getCurrentUser.getUid() 檢索每個(gè)用戶的數(shù)據(jù):
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) {
}
});
添加回答
舉報(bào)