3 回答
TA贡献1794条经验 获得超8个赞
我不知道你的Params.USERS和Params.PROFILEPIC是什么值,但请使用我下面的解决方案和硬编码值:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String profilePic = dataSnapshot.child("profilePic").getValue(String.class);
Log.d(TAG, profilePic);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Log errors
}
};
uidRef.addValueEventListener(valueEventListener);
添加值事件侦听器时,onDataChange()每次profilePic属性发生更改时都会触发该方法。
也不要忽略错误。如您所见,我已将它们记录在onCancelled()方法中。
TA贡献1871条经验 获得超8个赞
找到了解决办法:
refToUsers.getReference(Params.USERS).child(currentUser.getUid()).child(Params.PROFILEPIC).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String profilePic = dataSnapshot.getValue(String.class);
Log.d(TAG,"DataSnapshot: " + dataSnapshot.toString());
Log.d(TAG,"profile picture: " + profilePic);
Glide.with(getApplication()).load(profilePic).apply(new RequestOptions()
.placeholder(R.mipmap.ic_launcher))
.into(cvNavUserProfile);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
工作完美!
TA贡献1818条经验 获得超7个赞
使用这个query:
refToUsers.getReference("users").orderByChild().equalTo(currentUser.getUid()).child("profilePic").addChildEventListener(new ChildEventListener() {
...
..
// and the rest of your listener
添加回答
举报