java - 从 firebase Firestore 数据库中的存储下载图像时出错

标签 java android firebase google-cloud-firestore storage

enter image description here我正在使用 firebase 存储来存储图像,使用 firebase firestore 来存储存储的数据和图像 url。

下载图片时出现以下错误

java.io.IOException: { "error": { "code": 404, "message": "Not Found. Could not get object", "status": "GET_OBJECT" }}

下面是 postAdapter 类,然后在 fragment 中使用它来检索列表。

请让我知道我哪里出错了。

public class PostsAdapter extends FirestoreRecyclerAdapter<PostsModel, PostsAdapter.PostsHolder> {
    private OnItemClickListener listener;
    private View.OnClickListener buttonListener;
    private Context mContext;

    private String id;

    //boolean likechecker = false;

    private static final String TAG = "DocSnippets";
    StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("profile_pic");


    public PostsAdapter(@NonNull FirestoreRecyclerOptions<PostsModel> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull final PostsHolder holder, int position, @NonNull final PostsModel model) {
        //retrieve the fields here
           final String documentId = getSnapshots().getSnapshot(position).getId();

        holder.textViewDescription.setText(model.getPostContent());
        holder.textViewSpinnerC.setText(model.getPost_author_spinnerC());
        holder.textViewCategory.setText(model.getPostcategory());
        holder.textViewTitle.setText(model.getPostTitle());
        holder.textViewPostUsername.setText(model.getPost_author_username());


       storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                // Got the download URL for 'users/me/profile.png'
                holder.postUserImage.setImageURI(uri);
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                // Handle any errors
            }
        });


        holder.commentsbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent toCommentActivity = new Intent(view.getContext(), CommentActivity.class);
               toCommentActivity.putExtra("PostKey", documentId);
                view.getContext().startActivity(toCommentActivity);


            }
        }); }

    @NonNull
    @Override
    public PostsHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_list_layout,
                parent, false);
        return new PostsHolder(v);
    }

    public void deleteItem(int position) {
        getSnapshots().getSnapshot(position).getReference().delete();
    }

    public void setOnClickListener(OnClickListener postKey) {
    }


    class PostsHolder extends RecyclerView.ViewHolder {


        TextView textViewTitle;
        TextView textViewDescription;
        TextView textViewSpinnerC;
        TextView textViewCategory;
        TextView textViewPostUsername;

        TextView textViewTime;

        CircleImageView postUserImage;

        ImageButton favPostButton;
        Button commentsbutton;


        public PostsHolder(final View itemView) {
            super(itemView);
            textViewTitle = itemView.findViewById(R.id.post_item_title);
            textViewDescription = itemView.findViewById(R.id.post_item_description);
            textViewTime = itemView.findViewById(R.id.post_item_time);
             commentsbutton = itemView.findViewById(R.id.commenting_button);
             favPostButton = itemView.findViewById(R.id.imageButton1);
             textViewSpinnerC = itemView.findViewById(R.id.post_item_SpinnerC);
             textViewCategory = itemView.findViewById(R.id.post_item_Category);
             postUserImage = itemView.findViewById(R.id.post_user_profile_image);
             textViewPostUsername = itemView.findViewById(R.id.post_item_username);


            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION && listener != null) {
                        listener.onItemClick(getSnapshots().getSnapshot(position), position);
                    }
                }
            });



        }
    }



    public interface OnClickListener
    {
        void OnClickListener(DocumentSnapshot documentSnapshot, int position);

    }
    public void setOnClickListener(View.OnClickListener onClickListener) {
        this.buttonListener = onClickListener;
    }


    public interface OnItemClickListener {
        void onItemClick(DocumentSnapshot documentSnapshot, int position);
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        this.listener = listener;
    }
}

最佳答案

您已在数据库中提供了用户个人资料图像 url。尝试使用毕加索

Picasso.get().load(model.getPost_user_profile_pic_url()).into(holder.postUserImage);

关于java - 从 firebase Firestore 数据库中的存储下载图像时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57849648/

相关文章:

java - 在同一对象上使用不同的操作(方法)创建死锁情况?

java - Android Studio 加载多张图片时如何防止延迟

java - 如何仅使用 websockets 将 java 客户端连接到 SignalR Hub?

javascript - Firebase TypeError : childSnapshot. child(...).set 不是函数

android - Firebase 数据库错误 - 反序列化时需要一个映射,但得到了一个类 java.util.ArrayList

java - 使用 GSON,当某些键具有特殊字符时如何将 JSON 转换为 Java

android - 如何发送彩信而不提示通过 gmail、whatsapp 或其他方式发送?

java - 如何从 Java (Android) 中的 XML 节点获取标记 'Name'

Android如何在其他类中运行OnUiThread?

java - Gradle 未下载 Firebase?