这个问题没有直接答案,我尝试了各种方法。我需要存储在Firebase数据库中的图像才能显示在ImageView中。
这是我现有的代码,但是无效:
mUsersDB_photoUrl.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String photoUrl = dataSnapshot.child("photoUrl").getValue(String.class);
try {
Picasso.with(DisplayActivity.this).load(photoUrl).placeholder(R.mipmap.ic_launcher).into(Photo);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
调用用户名的方法有效:
mUsersDB_name.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Name.setText(dataSnapshot.getValue(String.class));
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我没有那么好,我自学Firebase。欢迎指点和指导。
答案 0 :(得分:1)
您正在使用Picasso,因此我建议您在获取图片时使用getDownloadUrl()。
StorageReference storageRef = storage.getReference().child("profiles").child(myAccount.getUID()).child("profile");//reach out to your photo file hierarchically
storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Log.d("URI", uri.toString()); //check path is correct or not ?
Picasso.with(DisplayActivity.this).load(uri.toString()).into(imageView);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle errors
}
});
答案 1 :(得分:0)
okey ..首先在此代码行下方设置日志并检查照片网址是否有效。
String photoUrl = dataSnapshot.child("photoUrl").getValue(String.class);
然后使用滑动将图像设置为ImageView
Glide.with([CONTEXT]).load([IMAGE_URL]).into([IMAGE_VIEW]);
注意:如果你想使用Picasso,那么你必须将你的背景传递给with([CONTEXT])
答案 2 :(得分:0)
我最后只是更改了我的数据库引用。 (代码的第一行)
完美无缺。
mUsersDB.child(user_id).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String photoUrl = dataSnapshot.child("photoUrl").getValue(String.class);
try {
Picasso.with(DisplayActivity.this).load(photoUrl).placeholder(R.mipmap.ic_launcher).into(disPhoto);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});