无法在 Android recyclerview 中使用 Picasso 从 Firestore 加载图像
Could'nt load images from Firestore with Picasso in Android recyclerview
我正在尝试使用 Android 的 RecyclerView 将存储在我的 Firestore 存储中的图像加载到图像视图中。上传图片没有问题,我为上传和下载配置了相同的权限。
但它只显示占位符参数中指定的图像。
我搜索了几项似乎与此问题相关的内容。然后发现Picasso Library的版本问题,with(context)改为get()
.
我将它们应用到我的代码中并进行了测试。
使用 2.5.2 的 Picasso 版本,然后尝试使用 (mContext)。
接下来我尝试了 2.71828 的 Picasso 版本然后尝试 get()
.
但两者给出的结果相同,可以确认here。
看来这不是毕加索的事。但是我找不到合适的解决方案。
有人可以帮忙吗?
onBindViewHolder
的来源 imageAdapter.java
@Override
public void onBindViewHolder(ImageViewHolder holder, int position) {
Upload uploadCurrent = mUploads.get(position);
holder.textViewName.setText(uploadCurrent.getName());
Picasso.with(mContext)
.load(uploadCurrent.getImageUrl())
.placeholder(R.mipmap.ic_launcher)
.fit()
.centerCrop()
.into(holder.imageView);
}
正如我上面提到的,get()
替换为 with(mContext
) 已经尝试过了。
如果您需要更多信息,请告诉我。
您可以使用回调来获取 success/error 事件。
Picasso.with(mContext)
.load(uploadCurrent.getImageUrl())
.error(R.drawable.error_image)
.into(holder.imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
// will load image
}
@Override
public void onError() {
// will not load image from url
}
});
我很抱歉来晚了,但这对我来说 100% 有效..
你只需在 picaso 中使用 imagPath 加载图像并完成
String imagpath="";
FirebaseStorage storageReference = FirebaseStorage.getInstance();
DatabaseReference mDatabase = null;
UploadTask uploadTask;
StorageReference riversRef = storageReference.getReference();
final StorageReference imagesRef = riversRef.child("images/Avatars/"+getSaltString()+filePathh.getLastPathSegment());
uploadTask = imagesRef.putFile(filePathh);
// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc.
// ...
imagesRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String content = uri.toString();
String result = content.substring(content.indexOf("%") + 1, content.indexOf("?"));
result = result.substring(2);
if (content.length() > 0) {
imagepath=content;
}
}
});
//update session image path
}
});
我正在尝试使用 Android 的 RecyclerView 将存储在我的 Firestore 存储中的图像加载到图像视图中。上传图片没有问题,我为上传和下载配置了相同的权限。 但它只显示占位符参数中指定的图像。
我搜索了几项似乎与此问题相关的内容。然后发现Picasso Library的版本问题,with(context)改为get()
.
我将它们应用到我的代码中并进行了测试。
使用 2.5.2 的 Picasso 版本,然后尝试使用 (mContext)。
接下来我尝试了 2.71828 的 Picasso 版本然后尝试 get()
.
但两者给出的结果相同,可以确认here。
看来这不是毕加索的事。但是我找不到合适的解决方案。
有人可以帮忙吗?
onBindViewHolder
的来源 imageAdapter.java
@Override
public void onBindViewHolder(ImageViewHolder holder, int position) {
Upload uploadCurrent = mUploads.get(position);
holder.textViewName.setText(uploadCurrent.getName());
Picasso.with(mContext)
.load(uploadCurrent.getImageUrl())
.placeholder(R.mipmap.ic_launcher)
.fit()
.centerCrop()
.into(holder.imageView);
}
正如我上面提到的,get()
替换为 with(mContext
) 已经尝试过了。
如果您需要更多信息,请告诉我。
您可以使用回调来获取 success/error 事件。
Picasso.with(mContext)
.load(uploadCurrent.getImageUrl())
.error(R.drawable.error_image)
.into(holder.imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
// will load image
}
@Override
public void onError() {
// will not load image from url
}
});
我很抱歉来晚了,但这对我来说 100% 有效.. 你只需在 picaso 中使用 imagPath 加载图像并完成
String imagpath="";
FirebaseStorage storageReference = FirebaseStorage.getInstance();
DatabaseReference mDatabase = null;
UploadTask uploadTask;
StorageReference riversRef = storageReference.getReference();
final StorageReference imagesRef = riversRef.child("images/Avatars/"+getSaltString()+filePathh.getLastPathSegment());
uploadTask = imagesRef.putFile(filePathh);
// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc.
// ...
imagesRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String content = uri.toString();
String result = content.substring(content.indexOf("%") + 1, content.indexOf("?"));
result = result.substring(2);
if (content.length() > 0) {
imagepath=content;
}
}
});
//update session image path
}
});