Android 图像未显示在recyclerview中

Android 图像未显示在recyclerview中,android,firebase,firebase-realtime-database,android-recyclerview,firebase-storage,Android,Firebase,Firebase Realtime Database,Android Recyclerview,Firebase Storage,我正在尝试制作一个应用程序,用户可以注册一个帐户,他们可以上传图片。我已经下载了上传部分,但我想在用户的个人资料页面上检索这些图片,但我不知道如何操作。有人可以告诉我如何检索这些图像,我想使用一个回收者的意见,这。提前谢谢。下面是我的代码 //上载图像类 public class UploadImageActivity extends AppCompatActivity implements View.OnClickListener { int PICK_IMAGE_REQUEST=2

我正在尝试制作一个应用程序,用户可以注册一个帐户,他们可以上传图片。我已经下载了上传部分,但我想在用户的个人资料页面上检索这些图片,但我不知道如何操作。有人可以告诉我如何检索这些图像,我想使用一个回收者的意见,这。提前谢谢。下面是我的代码

//上载图像类

public class UploadImageActivity extends AppCompatActivity implements View.OnClickListener {

    int PICK_IMAGE_REQUEST=234;
    private Button upload,button2;
    private ImageView imageView;
    private Uri filepath;
    FirebaseAuth firebaseAuth;
    FirebaseUser firebaseUser;
    FirebaseDatabase firebaseDatabase;
    TextView next;

    FirebaseStorage firebaseStorage;
    StorageReference storageReference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload_ad);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);


        firebaseStorage=FirebaseStorage.getInstance();
        storageReference=firebaseStorage.getReference();
        next=findViewById(R.id.next0);

        firebaseUser= firebaseAuth.getInstance().getCurrentUser();
        firebaseDatabase.getInstance().getReference();



        upload=findViewById(R.id.button_upload);
        button2=findViewById(R.id.submit);
        imageView=findViewById(R.id.view_image);

        upload.setOnClickListener(this);


    }

    private void showFileChooser(){
        Intent intent=new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Choose an image"),PICK_IMAGE_REQUEST);

    }

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

        if(requestCode== PICK_IMAGE_REQUEST && resultCode == RESULT_OK
                && data != null
                && data.getData() != null){
            next.setTextColor(Color.parseColor("#FF4500"));
            next.setEnabled(true);



            filepath=data.getData();




            try {
                // Bitmap bitmap=new Compressor(this).setMaxHeight(200) //Set height and width
                // .setMaxWidth(200)
                //.setQuality(100) // Set Quality
                //.compressToBitmap(file);
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),filepath);
                imageView.setImageBitmap(bitmap);
                // build alert dialog


            } catch (IOException e) {
                e.printStackTrace();
            }







        }


        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(filepath != null) {



                    final ProgressDialog progressDialog=new ProgressDialog(UploadAdActivity.this);
                    progressDialog.setTitle("Uploading");
                    progressDialog.show();


                    int aNumber = (int) (20 * Math.random()) + 1;


                    //StorageReference riversRef=storageReference.child(firebaseUser.getUid()+"/"+"image.png");
                    // StorageReference=firebaseStorage.getInstance().getReferenceFromUrl()
                    StorageReference riversRef = storageReference.child(System.currentTimeMillis()+"."+getExtension(filepath));

                    //final String url=riversRef.getDownloadUrl().getResult().toString();
                    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
                    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference("Users");
                    final DatabaseReference update = rootRef.child(uid).child("images");





                    riversRef.putFile(filepath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            progressDialog.dismiss();
                            Toast.makeText(UploadAdActivity.this,"Uploaded successfully",Toast.LENGTH_LONG).show();
                            storageReference.getDownloadUrl();
                            taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {
                                    String download_url=uri.toString();
                                    update.child("images").setValue(download_url);

                                }
                            });
                        }
                    }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            progressDialog.dismiss();
                            Toast.makeText(UploadAdActivity.this,"Failed to upload",Toast.LENGTH_LONG).show();
                        }
                    }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onProgress(@NonNull UploadTask.TaskSnapshot taskSnapshot) {
                            double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot
                                    .getTotalByteCount());
                            progressDialog.setMessage("Uploaded "+(int)progress+"%");                }
                    });




                }


            }


        });

    }

    private String getExtension(Uri filepath) {
        ContentResolver contentResolver=getContentResolver();
        MimeTypeMap mimeTypeMap=MimeTypeMap.getSingleton();
        return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(filepath));

    };


    @Override
    public void onClick(View v) {

        if(v==upload){
            showFileChooser();
            //uploadImage();
            next.setTextColor(Color.parseColor("#FF4500"));



            /*
            Intent i = new Intent(UploadAdActivity.this, ActionActivity.class);
            //i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(i);

             */

        }



    }






}

//Users profile
 public class ProfileActivity extends AppCompatActivity implements View.OnClickListener {

   private RecyclerView recyclerView;
   private ImageAdapter mAdapter;

   private DatabaseReference databaseReference;
   private List<Upload> mUploads;
   FirebaseAuth firebaseAuth;
   FirebaseUser firebaseUser;
    int PICK_IMAGE_REQUEST=234;
    private Button upload,button2;
    private ImageView imageView;
    private Uri filepath;
    FirebaseDatabase firebaseDatabase;
    FirebaseStorage firebaseStorage;
    StorageReference storageReference;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
        overridePendingTransition(R.anim.slide_right, R.anim.slide_left);

        mUploads=new ArrayList<>();

        mAdapter=new ImageAdapter(ProfileActivity.this, mUploads);


        recyclerView=findViewById(R.id.recyclerView);
        //recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(mAdapter);

        firebaseStorage=FirebaseStorage.getInstance();
        storageReference=firebaseStorage.getReference();

        firebaseUser= firebaseAuth.getInstance().getCurrentUser();
        firebaseDatabase.getInstance().getReference();



        upload=findViewById(R.id.button_upload);
        button2=findViewById(R.id.submit);
        imageView=findViewById(R.id.view_image);
        upload.setOnClickListener(this);



        String uid=FirebaseAuth.getInstance().getCurrentUser().getUid();




        databaseReference=FirebaseDatabase.getInstance().getReference();
        //databaseReference.child("images");

        databaseReference.orderByChild(uid).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for(DataSnapshot postsnapshot:dataSnapshot.getChildren()){

                    Upload upload=postsnapshot.getValue(Upload.class);
                    mUploads.add(upload);


                }

                mAdapter.notifyDataSetChanged();




            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(ProfileActivity.this,databaseError.getMessage(),Toast.LENGTH_LONG).show();

            }
        });




        recyclerView.setAdapter(mAdapter); //Again set adapter to recyclerview




    }

   //Adapter class
   public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder>{

    private Context mContext;
    private List<Upload> mUploads;

    public ImageAdapter(Context context,List<Upload> uploads){
        mContext = context;
        mUploads = uploads;

    }

    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View V = LayoutInflater.from(mContext).inflate(R.layout.cardview, parent, false);
        return new ImageViewHolder(V);


    }

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
        Upload uploadCurrent=mUploads.get(position);
        Picasso.get().load(uploadCurrent.getmImageUrl()).fit().centerCrop().into(holder.imageView);

    }

    @Override
    public int getItemCount() {
        return mUploads.size();

    }

    public class ImageViewHolder extends RecyclerView.ViewHolder{
        public ImageView imageView;

        public ImageViewHolder(@NonNull View itemView) {
            super(itemView);

            imageView=itemView.findViewById(R.id.imageview);
        }
    }
}

   //Upload class

  public class Upload {
    private String images;

    public Upload(){
        //Empty constructor needed
    }

    public Upload (String imageUrl){
        images=imageUrl;

    }

    public String getmImageUrl() {
        return images;
    }

    public void setmImageUrl(String images) {
        this.images = images;
    }
}
公共类UploadImageActivity扩展了AppCompatActivity实现了View.OnClickListener{
int PICK_IMAGE_REQUEST=234;
私人按钮上传,按钮2;
私人影像视图;
私有Uri文件路径;
FirebaseAuth FirebaseAuth;
FirebaseUser FirebaseUser;
FirebaseDatabase FirebaseDatabase;
文本视图下一步;
火基存储火基存储;
StorageReference-StorageReference;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u upload\u ad);
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u NOSENSOR);
firebaseStorage=firebaseStorage.getInstance();
storageReference=firebaseStorage.getReference();
next=findViewById(R.id.next0);
firebaseUser=firebaseAuth.getInstance().getCurrentUser();
firebaseDatabase.getInstance().getReference();
upload=findViewById(R.id.button\u upload);
button2=findViewById(R.id.submit);
imageView=findViewById(R.id.view\u图像);
upload.setOnClickListener(这个);
}
私有void showFileChooser(){
意图=新意图();
intent.setType(“image/*”);
intent.setAction(intent.ACTION\u GET\u CONTENT);
startActivityForResult(Intent.createChooser(Intent,“选择图像”),PICK_image_请求);
}
@凌驾
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
如果(requestCode==PICK\u IMAGE\u REQUEST&&resultCode==RESULT\u OK
&&数据!=null
&&data.getData()!=null){
next.setTextColor(Color.parseColor(#FF4500”);
next.setEnabled(true);
filepath=data.getData();
试一试{
//位图位图=新压缩器(此).setMaxHeight(200)//设置高度和宽度
//.setMaxWidth(200)
//.setQuality(100)//设置质量
//.compressToBitmap(文件);
位图Bitmap=MediaStore.Images.Media.getBitmap(getContentResolver(),filepath);
设置图像位图(位图);
//生成警报对话框
}捕获(IOE异常){
e、 printStackTrace();
}
}
button2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(filepath!=null){
final ProgressDialog ProgressDialog=新建ProgressDialog(UploadAdActivity.this);
progressDialog.setTitle(“上传”);
progressDialog.show();
intanumber=(int)(20*Math.random())+1;
//storagereferef=StorageReference.child(firebaseUser.getUid()+“/”+“image.png”);
//StorageReference=firebaseStorage.getInstance().getReferenceFromUrl()
storagereferef=StorageReference.child(System.currentTimeMillis()+“”+getExtension(filepath));
//最后一个字符串url=RIVERREF.getDownloadUrl().getResult().toString();
字符串uid=FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference(“用户”);
最终数据库引用更新=rootRef.child(uid.child)(“图像”);
riversRef.putFile(filepath).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
progressDialog.disclose();
Toast.makeText(UploadAdaActivity.this,“上载成功”,Toast.LENGTH_LONG.show();
storageReference.getDownloadUrl();
taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
String download_url=uri.toString();
update.child(“images”).setValue(下载url);
}
});
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
progressDialog.disclose();
Toast.makeText(UploadAdaActivity.this,“未能上载”,Toast.LENGTH_LONG.show();
}
}).addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(@NonNull UploadTask.TaskSnapshot TaskSnapshot){
双进度=(100.0*taskSnapshot.GetByTestTransferred()/taskSnapshot
.getTotalByteCount());
progressDialog.setMessage(“上载”+(int)进度+“%”;}
});
}
}
});
}
私有字符串getExtension(Uri文件路径){
ContentResolver ContentResolver=getContentResolver();
MimeTypeMap MimeTypeMap=MimeTypeMap.getSingleton();
返回mimeTypeMap.getextensionfrommetype(contentResolver)。
databaseReference.orderByChild(uid).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for(DataSnapshot postsnapshot:dataSnapshot.getChildren()){

                    Upload upload=postsnapshot.getValue(Upload.class);
                    mUploads.add(upload);

                }

                mAdapter.notifyDataSetChanged();



            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(ProfileActivity.this,databaseError.getMessage(),Toast.LENGTH_LONG).show();

            }
        });
public void refresh(List<Upload> uploads){
    this.uploads=uploads;
    notifyDataSetChanged();
 }
mAdapter.refresh(mUploads);