我正在嘗試將 Firebase 資料庫中的影像加載到用戶個人資料圖片的 ImageView 中。
我試過的
我嘗試使用 Glide 將影像從 Firestore 加載到 ImageView。我的代碼如下所示:
FirebaseDatabase.getInstance().getReference("user").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
for (DataSnapshot child: snapshot.getChildren()) {
User user = child.getValue(User.class);
Glide.with(MapsActivity.this).load(user.getProfilePicture()).error(R.drawable.ic_baseline_person_24).placeholder(R.drawable.ic_baseline_person_24).into(profileImage);
}
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
throw error.toException();
}
});
但是,這是行不通的。
我的firebase結構如下:

謝謝!
String url = FirebaseDatabase.getInstance().getReference("user/" FirebaseAuth.getInstance().getCurrentUser().getUid().toString() "/profilePicture").get().getResult().getValue().toString();
uj5u.com熱心網友回復:
您正在加載整個user節點,其中包含多個用戶的資訊,因此您snapshot包含所有這些用戶的資料。
為了處理這些多個用戶,你必須遍歷snapshot.getChildren()在onDataChange:
FirebaseDatabase.getInstance().getReference("user").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
for (DataSnapshot child: snapshot.getChildren()) { // ?? loop over child snapshots
User user = child.getValue(User.class);
Log.i("DB", user.toString());
}
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
throw error.toException(); // ?? Never ignore errors
}
});
如果您知道要顯示其影像的用戶的 UID,則可以只加載該用戶:
// ?? user to load
FirebaseDatabase.getInstance().getReference("user").child(uid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
User user = child.getValue(User.class);
Log.i("DB", user.toString());
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
throw error.toException(); // ?? Never ignore errors
}
});
您不再需要回圈,getChildren()因為現在代碼只加載一個用戶。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394273.html
