我对Java没有多少经验.我不确定这个问题是不是很愚蠢,但是我需要从Firebase实时数据库中获取用户名,并且由于此方法而返回此名称.所以,我想出了如何获得这个值,但我不明白如何返回它作为这个方法的结果.最好的方法是什么?
private String getUserName(String uid) {
databaseReference.child(String.format("users/%s/name", uid))
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// How to return this value?
dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
Run Code Online (Sandbox Code Playgroud) firebase中的数据如下所示

我想将标记为userId的数据作为列表或数组.
我的方法是:
public static void writePostToFriends(final String userId, final String userName, final String title, final String body, final String authorPhoto){
DatabaseReference mpostRef = FirebaseDatabase.getInstance().getReference().child("social/user/"+userId+"/friends");
mpostRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
GenericTypeIndicator<List<Friends>> t = new GenericTypeIndicator<List<Friends>>() {};
List<Friends> mFriends = dataSnapshot.getValue(t);
long j = mFriends.size();
for (long i = 0; i == j; i++){
Friends mReadFriends = dataSnapshot.getValue(Friends.class);
String getUid = mReadFriends.userID;
writeNewPost(getUid, userId, userName, title, body, authorPhoto);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Android 中的 Firebase 获取用户列表。
我已经有了用户的 uuid,并使用它来尝试获取整个对象。uuid 既是节点名称又是用户节点内的字段(当然是相同的)。
这是我的代码:
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("users");
Query query = usersRef.orderByChild("uuid").equalTo(animalMarker.getUserUid());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.d(TAG, "onDataChange: xxxxxxxx---- entered onDataChange");
// go to node "users/userUID" , becuase dataSnapshot is parent node
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Log.d(TAG, "xxxxxxxx---- onDataChange: ds= " + ds);
User user = ds.getValue(User.class);
Log.d(TAG, "xxxxxxxx---- onDataChange: user=" + user);
// createdByTV.setText("Created by \n" + user.getEmail());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) …Run Code Online (Sandbox Code Playgroud)