如何将 Firestore 数据库中的图像加载到 ImageView 中?
How do I load an image from FirestoreDatabase into ImageView?
我正在尝试将 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();
您正在加载整个 user
节点,其中包含多个用户的信息,因此您的 snapshot
包含所有这些用户的数据。
要处理这些多个用户,您必须在 onDataChange
中遍历 snapshot.getChildren()
:
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()
,因为现在代码只加载一个用户。
我正在尝试将 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();
您正在加载整个 user
节点,其中包含多个用户的信息,因此您的 snapshot
包含所有这些用户的数据。
要处理这些多个用户,您必须在 onDataChange
中遍历 snapshot.getChildren()
:
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()
,因为现在代码只加载一个用户。