Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从firebase Firestore数据库中的存储器下载图像时出错_Java_Android_Firebase_Google Cloud Firestore_Storage - Fatal编程技术网

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

Java 从firebase Firestore数据库中的存储器下载图像时出错,java,android,firebase,google-cloud-firestore,storage,Java,Android,Firebase,Google Cloud Firestore,Storage,我使用firebase存储来存储图像,使用firebase firestore来存储存储的数据和图像url 我在下载图像时遇到以下错误 java.io.IOException:{“error”:{“code”:404,“message”:“Not” 找到。无法获取对象”,“状态”:“获取对象”} 下面是postAdapter类,然后在片段中使用它来检索列表 请让我知道我在这方面哪里出了问题 public class PostsAdapter extends FirestoreRecyclerAd

我使用firebase存储来存储图像,使用firebase firestore来存储存储的数据和图像url

我在下载图像时遇到以下错误

java.io.IOException:{“error”:{“code”:404,“message”:“Not” 找到。无法获取对象”,“状态”:“获取对象”}

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

请让我知道我在这方面哪里出了问题

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;
    }
}
公共类PostsAdapter扩展FirestoreRecyclerAdapter{
私人监听;
private View.OnClickListener按钮Listener;
私有上下文;
私有字符串id;
//布尔likechecker=false;
私有静态最终字符串TAG=“DocSnippets”;
StorageReference-StorageReference=FirebaseStorage.getInstance().getReference().child(“profile_pic”);
公共PostsAdapter(@NonNull FirestoreRecyclerOptions选项){
超级(期权);
}
@凌驾
BindViewHolder上的受保护无效(@NonNull final PostsHolder holder,int位置,@NonNull final PostsModel){
//在这里检索字段
最后一个字符串documentId=getSnapshots().getSnapshot(位置).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\u author\u username());
storageReference.getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
//已获取“users/me/profile.png”的下载URL
holder.POSTSERIMAGE.setImageURI(uri);
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理任何错误
}
});
holder.commentsbutton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Intent-toCommentActivity=新的意图(view.getContext(),CommentActivity.class);
toCommentActivity.putExtra(“PostKey”,documentId);
view.getContext().startActivity(toCommentActivity);
}
}); }
@非空
@凌驾
public PostsHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
视图v=LayoutInflater.from(parent.getContext())。充气(R.layout.post\u list\u布局,
父母,假);
返回新的后支架(v);
}
公共无效删除项(内部位置){
getSnapshots().getSnapshot(位置).getReference().delete();
}
公共void setOnClickListener(OnClickListener postKey){
}
类PostsHolder扩展了RecyclerView.ViewHolder{
文本视图文本视图标题;
文本视图文本视图描述;
TextView textViewSpinnerC;
文本视图文本视图类别;
TextView textViewPostUsername;
TextView textViewTime;
圆形图像视图姿势图像;
图像按钮favPostButton;
按钮注释按钮;
公共PostsHolder(最终视图项视图){
超级(项目视图);
textViewTitle=itemView.findViewById(R.id.post\u item\u title);
textViewDescription=itemView.findViewById(R.id.post\u item\u description);
textViewTime=itemView.findViewById(R.id.post\u item\u time);
commentsbutton=itemView.findViewById(R.id.commenting_按钮);
favPostButton=itemView.findViewById(R.id.imageButton1);
textViewSpinnerC=itemView.findViewById(R.id.post\u item\u SpinnerC);
textViewCategory=itemView.findViewById(R.id.post\u item\u Category);
postserimage=itemView.findviewbyd(R.id.post\u user\u profile\u image);
textViewPostUsername=itemView.findViewById(R.id.post\u item\u用户名);
itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int position=getAdapterPosition();
if(position!=RecyclerView.NO_position&&listener!=null){
onItemClick(getSnapshots().getSnapshot(position),position);
}
}
});
}
}
公共接口侦听器
{
void OnClickListener(DocumentSnapshot DocumentSnapshot,int位置);
}
public void setOnClickListener(View.OnClickListener OnClickListener){
this.buttonListener=onClickListener;
}
公共接口侦听器{
void onItemClick(DocumentSnapshot DocumentSnapshot,int位置);
}
公共void setOnItemClickListener(OnItemClickListener侦听器){
this.listener=listener;
}
}

您已经在数据库中提供了用户配置文件图像url。试着用毕加索

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

它正确地说图像不存在,请发布存储截图。但是图像确实存在,我已经验证了。请以正确的方式发布图像存储位置。这是下载URL,我希望它能工作,在profile_pic中有一个文件夹存储图像,先生,您不明白我的意思。我希望存储位置与此类似:
gs://xx.appspot.com/images/6g74sRdiPh5BVApVtOFM.jpg