无法在 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


            }
        });