在Android中从Firebase检索图像

我正在使用Firebase后端处理此博客应用程序,但未获取图像。实际上,它既不显示个人资料图像也不显示博客图像。我已经粘贴了应用程序的代码,这有助于我检索图像。谢谢。

'''package com.example.theblog;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.example.theblog.BlogPost;
import com.example.theblog.R;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.Documentsnapshot;
import com.google.firebase.firestore.FirebaseFirestore;

import java.sql.Date;
import java.text.DateFormat;
import java.util.List;

import de.hdodenhof.circleimageview.CircleImageView;

 public class BlogRecyclerAdapter extends RecyclerView.Adapter<BlogRecyclerAdapter.ViewHolder> {
    public List<BlogPost> blog_list;
    public Context context;
    private FirebaseFirestore firebaseFirestore;
    public FirebaseAuth firebaseAuth;

    public BlogRecyclerAdapter(List<BlogPost> blog_list){
        this.blog_list=blog_list;
    }
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
        View view = LayoutInflater.from(parent.getcontext()).inflate(R.layout.blog_list_item,parent,false);
         context=parent.getcontext();
         firebaseAuth=FirebaseAuth.getInstance();
         firebaseFirestore=FirebaseFirestore.getInstance();
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder,int position) {
          holder.setIsRecyclable(false);

        String desc_data=blog_list.get(position).getDesc();
        holder.setDescText(desc_data);

      String imageUrl=blog_list.get(position).getImage_url();
      holder.setBlogImage(imageUrl);
        try{
            long millisecond=blog_list.get(position).getTimestamp().getTime();

            android.text.format.DateFormat df = new android.text.format.DateFormat();
             String dateString=df.format("dd/MM/yyyy ",new Date(millisecond)).toString();
            holder.setDate(dateString);
        }catch (Exception e){
            Toast.makeText(context,"Exception"+e.getMessage(),Toast.LENGTH_LONG).show();
        }
        String user_id=blog_list.get(position).getUser_id();
        firebaseFirestore.collection("Users").document(user_id).get().addOnCompleteListener(


                new OnCompleteListener<Documentsnapshot>() {
            @Override
            public void onComplete(@NonNull Task<Documentsnapshot> task) {
                if (task.isSuccessful()){
                    String username=task.getResult().getString("name");
                    String userImage=task.getResult().getString("image");
                    holder.setUserData(username,userImage);
                }else {
                    String error=task.getException().getMessage();
                    Toast.makeText(context,"Error"+error,Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    @Override
    public int getItemCount() {

        return blog_list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        private View mView;
        private TextView descView;
        private TextView blogDate;
        private CircleImageView blogUserImage;
        private ImageView blogImage;
        private TextView blogusername;
        public ViewHolder(View itemView) {
            super(itemView);
            mView=itemView;
        }
        public void setDescText(String descText){
            descView=mView.findViewById(R.id.blog_post_desc);
            descView.setText(descText);
        }
        public void setDate(String date){
            blogDate=mView.findViewById(R.id.blog_date);
            blogDate.setText(date);
        }
        public void setUserData(String username,String userImage){
            blogusername=mView.findViewById(R.id.blog_user_name);
            blogusername.setText(username);

            blogUserImage=mView.findViewById(R.id.blog_user_image);

            RequestOptions request=new RequestOptions();
            request.placeholder(R.color.grayColor);
            Glide.with(context).applyDefaultRequestOptions(request).load(userImage).into(blogUserImage);
        }
        public void setBlogImage(String downloadUri){
            blogImage=mView.findViewById(R.id.blog_image);

            RequestOptions requestOptions=new RequestOptions();
            requestOptions.placeholder(R.color.grayColor);
            Glide.with(context).load(downloadUri).into(blogImage);
        }
    }



}

''' 下面给出了BlogPost的代码。

'''

package com.example.theblog;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatactivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.floatingactionbutton.FloatingactionButton;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FieldValue;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.theartofdev.edmodo.cropper.CropImage;
import com.theartofdev.edmodo.cropper.CropImageView;

import java.util.HashMap;
import java.util.Map;

import de.hdodenhof.circleimageview.CircleImageView;

public class Postactivity extends AppCompatactivity {
private ImageView newPostImage;
private EditText newPostDesc;
private FloatingactionButton newPostBtn;
private Uri postImageUri=null;
private StorageReference storageReference;
private FirebaseFirestore firebaseFirestore;
private FirebaseAuth firebaseAuth;
private ProgressBar progressBar;
private String current_user_id;
private static final int GalleryPick =1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_post);
        setTitle("Post Blog");
        getSupportactionBar().setDisplayHomeAsUpEnabled(true);
        storageReference= FirebaseStorage.getInstance().getReference();
        firebaseAuth=FirebaseAuth.getInstance();
        firebaseFirestore=FirebaseFirestore.getInstance();
        current_user_id=firebaseAuth.getcurrentUser().getUid();
        newPostImage=findViewById(R.id.image);
        newPostBtn=findViewById(R.id.btn);
        newPostDesc=findViewById(R.id.desc);
        progressBar=findViewById(R.id.progress1);
        newPostImage.setOnClicklistener(new View.OnClicklistener() {
            @Override
            public void onClick(View v) {
                CropImage.activity()
                        .setGuidelines(CropImageView.Guidelines.ON)
                        .setaspectRatio(1,1)
                        .start(Postactivity.this);

            }
        });
        newPostBtn.setOnClicklistener(new View.OnClicklistener() {
            @Override
            public void onClick(View v) {
                final String desc=newPostDesc.getText().toString();
                if (!TextUtils.isEmpty(desc) && postImageUri!=null){
                    String randomName= FieldValue.serverTimestamp().toString();
                    progressBar.setVisibility(View.VISIBLE);

                    StorageReference filepath=storageReference.child("post Images").child(randomName+".jpg");
                    filepath.putFile(postImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.Tasksnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<UploadTask.Tasksnapshot> task) {
                            if (task.isSuccessful()){
                                Task<Uri> downloadUri=task.getResult().getMetadata().getReference().getDownloadUrl();
                                Map<String,Object> postMap=new HashMap<>();
                                postMap.put("image_url",downloadUri.toString());
                                postMap.put("user_id",current_user_id);
                                postMap.put("desc",desc);
                                postMap.put("timestamp",FieldValue.serverTimestamp());
                                firebaseFirestore.collection("Posts").add(postMap).addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
                                    @Override
                                    public void onComplete(@NonNull Task<DocumentReference> task) {
                                        if (task.isSuccessful()){
                                            Toast.makeText(Postactivity.this,"Your Post is Uploaded",Toast.LENGTH_LONG).show();
                                            Intent mainIntent=new Intent(Postactivity.this,Mainactivity.class);
                                            startactivity(mainIntent);
                                        }else {
                                            String error =task.getException().getMessage();
                                            Toast.makeText(Postactivity.this,Toast.LENGTH_LONG).show();
                                            progressBar.setVisibility(View.INVISIBLE);

                                        }
                                    }
                                });
                            }else {
                                String error =task.getException().getMessage();
                                Toast.makeText(Postactivity.this,Toast.LENGTH_LONG).show();
                                progressBar.setVisibility(View.INVISIBLE);

                            }
                        }
                    });
                }
            }
        });
    }

    @Override
    protected void onactivityResult(int requestCode,int resultCode,@Nullable Intent data) {
        super.onactivityResult(requestCode,resultCode,data);

        if (requestCode==CropImage.CROP_IMAGE_actIVITY_REQUEST_CODE){
            CropImage.activityResult result =CropImage.getactivityResult(data);
            if (resultCode==RESULT_OK){
            postImageUri=result.geturi();
            newPostImage.setImageURI(postImageUri);}
        else if (resultCode==CropImage.CROP_IMAGE_actIVITY_RESULT_ERROR_CODE){
            Exception error = result.getError();
        }
        }
    }
}

'''

请帮助我找到该问题的解决方案,并先感谢您。

charlie7911 回答:在Android中从Firebase检索图像

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3158914.html

大家都在问