首页 > 解决方案 > 从 Firebase 获取特定数据(图像)的问题

问题描述

我正在制作一个像 google playstore 这样的应用程序,我在其中上传了应用程序标题、描述、应用程序图像、屏幕截图,并且我成功上传了,但是当我检索数据图像时,对于每个图像块,我得到了相似的图像,请在此处查看一些图像: 在此处输入图像描述

我想要我在上传时拥有的图片提前谢谢

这是我的upload_apk.java

package com.amazoneindia.amazone_india;

import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.MimeTypeMap;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.squareup.picasso.Picasso;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static android.app.Activity.RESULT_OK;

/**
 * A simple {@link Fragment} subclass.
 */
public class Upload_apk extends Fragment {
    Button bt1,bt2;
    TextView tv;
    Button btnss1,btnss2,btnss3,btnss4,btnss5;
    TextView tvss1,tvss2,tvss3,tvss4,tvss5;
    private EditText Name, Email, Pass, Ph, AppTitle, Appdescript;
    private StorageReference mStorageRef;
    private DatabaseReference mDatabaseRef;
    private ImageView imageView;
    private ImageView imagess1,imagess2,imagess3,imagess4,imagess5;
    private Uri imageUri,imagess1uri,imagess2uri,imagess3uri,imagess4uri,imagess5uri;


    public static final String FB_STORAGE_PATH = "image/";
    public static final String FB_DATABASE_PATH = "image";
    public static final int REQUEST_CODE=1;
    public static final int REQUEST_CODE1=2;
    public static final int REQUEST_CODE2=3;
    public static final int REQUEST_CODE3=4;
    public static final int REQUEST_CODE4=5;
    public static final int REQUEST_CODE5=6;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.fragment_upload_apk, container, false);
        mStorageRef = FirebaseStorage.getInstance().getReference();
        mDatabaseRef = FirebaseDatabase.getInstance().getReference(FB_DATABASE_PATH);

        imageView = view.findViewById(R.id.etimage);
        imagess1=view.findViewById(R.id.imagess1);
        imagess2=view.findViewById(R.id.imagess2);
        imagess3=view.findViewById(R.id.imagess3);
        imagess4=view.findViewById(R.id.imagess4);
        imagess5=view.findViewById(R.id.imagess5);
        Name = view.findViewById(R.id.etname);
        Email = view.findViewById(R.id.etemail);
        Pass = view.findViewById(R.id.etpassword);
        Ph = view.findViewById(R.id.etphone);
        AppTitle=view.findViewById(R.id.ettitle);
        Appdescript=view.findViewById(R.id.etdescrip);
        tv=view.findViewById(R.id.upload_tv);
        tvss1=view.findViewById(R.id.tvss1);
        tvss2=view.findViewById(R.id.tvss2);
        tvss3=view.findViewById(R.id.tvss3);
        tvss4=view.findViewById(R.id.tvss4);
        tvss5=view.findViewById(R.id.tvss5);
        bt1=view.findViewById(R.id.browsebtn);
        btnss1=view.findViewById(R.id.btnss1);
        btnss2=view.findViewById(R.id.btnss2);
        btnss3=view.findViewById(R.id.btnss3);
        btnss4=view.findViewById(R.id.btnss4);
        btnss5=view.findViewById(R.id.btnss5);
        bt2=view.findViewById(R.id.upload_btn);

        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent,"Select Image"), REQUEST_CODE);
            }
        });
        btnss1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent,"Select Image"), REQUEST_CODE1);
            }
        });
        btnss2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent,"Select Image"), REQUEST_CODE2);
            }
        });
        btnss3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent,"Select Image"), REQUEST_CODE3);
            }
        });
        btnss4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent,"Select Image"), REQUEST_CODE4);
            }
        });
        btnss5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent,"Select Image"), REQUEST_CODE5);
            }
        });
        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (imageUri!=null){
                    final ProgressDialog dialog=new ProgressDialog(getContext());
                    dialog.setTitle("Uploading Image....");
                    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    dialog.setProgress(0);
                    dialog.show();
                    bt1.setVisibility(View.GONE);
                    tv.setVisibility(View.GONE);
                    btnss1.setVisibility(View.GONE);
                    tvss1.setVisibility(View.GONE);
                    btnss2.setVisibility(View.GONE);
                    tvss2.setVisibility(View.GONE);
                    btnss3.setVisibility(View.GONE);
                    tvss3.setVisibility(View.GONE);
                    btnss4.setVisibility(View.GONE);
                    tvss4.setVisibility(View.GONE);
                    btnss5.setVisibility(View.GONE);
                    tvss5.setVisibility(View.GONE);

                    StorageReference ref =mStorageRef.child(FB_STORAGE_PATH + System.currentTimeMillis() +"."+getImageExt(imageUri));
                    ref.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {


                            dialog.dismiss();
                            Toast.makeText(getActivity(),"Image Uploaded",Toast.LENGTH_SHORT).show();
                            Task<Uri> urlTask=taskSnapshot.getStorage().getDownloadUrl();
                            while (!urlTask.isSuccessful());

                            Uri downloadUrl=urlTask.getResult();

                            ImageUpload imageUpload=new ImageUpload(Name.getText().toString(),Email.getText().toString(),Pass.getText().toString(),Ph.getText().toString(),AppTitle.getText().toString(),Appdescript.getText().toString(),downloadUrl.toString(),downloadUrl.toString(),downloadUrl.toString(),downloadUrl.toString(),downloadUrl.toString(),downloadUrl.toString());
                            String uploaded=mDatabaseRef.push().getKey();
                            mDatabaseRef.child(uploaded).setValue(imageUpload);
                        }
                    }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {

                            dialog.dismiss();
                            Toast.makeText(getActivity(),e.getMessage(),Toast.LENGTH_SHORT).show();
                        }
                    }) .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                            int progress=(int)(100 * taskSnapshot.getBytesTransferred()/ taskSnapshot.getTotalByteCount());
                            dialog.setProgress(progress);
                        }
                    });
                    StorageReference ref1=mStorageRef.child(FB_STORAGE_PATH + System.currentTimeMillis() +"."+getImageExt(imagess1uri));
                    ref1.putFile(imagess1uri);
                    StorageReference ref2=mStorageRef.child(FB_STORAGE_PATH + System.currentTimeMillis() +"."+getImageExt(imagess2uri));
                    ref2.putFile(imagess2uri);
                    StorageReference ref3=mStorageRef.child(FB_STORAGE_PATH + System.currentTimeMillis() +"."+getImageExt(imagess3uri));
                    ref3.putFile(imagess3uri);
                    StorageReference ref4=mStorageRef.child(FB_STORAGE_PATH + System.currentTimeMillis() +"."+getImageExt(imagess4uri));
                    ref4.putFile(imagess4uri);
                    StorageReference ref5=mStorageRef.child(FB_STORAGE_PATH + System.currentTimeMillis() +"."+getImageExt(imagess5uri));
                    ref5.putFile(imagess5uri);
                }else {
                    Toast.makeText(getActivity(),"Please select image",Toast.LENGTH_SHORT).show();
                }
            }
        });
        return view;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==REQUEST_CODE && resultCode == RESULT_OK && data !=null && data.getData() != null){
            imageUri=data.getData();
            Picasso.with(getContext()).load(imageUri).into(imageView);
            try{
                Bitmap bm= MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(),imageUri);
                imageView.setImageBitmap(bm);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (requestCode==REQUEST_CODE1 && resultCode==RESULT_OK && data !=null && data.getData() !=null){
            imagess1uri=data.getData();
            Picasso.with(getContext()).load(imagess1uri).into(imagess1);
            try {
                Bitmap bm1=MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(),imagess1uri);
                imagess1.setImageBitmap(bm1);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (requestCode==REQUEST_CODE2 && resultCode==RESULT_OK && data !=null && data.getData() !=null){
            imagess2uri=data.getData();
            Picasso.with(getContext()).load(imagess2uri).into(imagess2);

            try {
                Bitmap  bm2 = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(),imagess2uri);
                imagess2.setImageBitmap(bm2);

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

        }
        if (requestCode==REQUEST_CODE3 && resultCode==RESULT_OK && data !=null && data.getData() !=null){
            imagess3uri=data.getData();
            Picasso.with(getContext()).load(imagess3uri).into(imagess3);

            try {
                Bitmap  bm3 = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(),imagess3uri);
                imagess3.setImageBitmap(bm3);

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

        }
        if (requestCode==REQUEST_CODE4 && resultCode==RESULT_OK && data !=null && data.getData() !=null){
            imagess4uri=data.getData();
            Picasso.with(getContext()).load(imagess4uri).into(imagess4);


            try {
                Bitmap  bm4 = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(),imagess4uri);
                imagess4.setImageBitmap(bm4);

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

        }
        if (requestCode==REQUEST_CODE5 && resultCode==RESULT_OK && data !=null && data.getData() !=null){
            imagess5uri=data.getData();
            Picasso.with(getContext()).load(imagess5uri).into(imagess5);

            try {
                Bitmap  bm5 = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(),imagess5uri);
                imagess5.setImageBitmap(bm5);

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

        }
    }

    public String getImageExt(Uri uri){
        ContentResolver contentResolver=getActivity().getContentResolver();
        MimeTypeMap mimeTypeMap=MimeTypeMap.getSingleton();
        return  mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));
    }
}

这是我的适配器类

package com.amazoneindia.amazone_india;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import java.util.List;

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ImageViewHolder> {

    private Context mcontext;
    private List<ImageUpload> mUploads;

    public ListAdapter(Context context, List<ImageUpload> uploads) {
        mcontext = context;
        mUploads = uploads;
    }

    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(mcontext).inflate(R.layout.single_list, viewGroup, false);
        return new ImageViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder imageViewHolder, int i) {
        ImageUpload imageUpload = mUploads.get(i);
        imageViewHolder.tvapptitle.setText(imageUpload.getApptitle());
        imageViewHolder.tvdescription.setText(imageUpload.getAppdescript());
        Picasso.with(mcontext)
                .load(imageUpload.getUrl())
                .fit()
                .centerCrop()
                .into(imageViewHolder.ivappimage);
        Picasso.with(mcontext)
                .load(imageUpload.getUrlss1())
                .fit()
                .centerCrop()
                .into(imageViewHolder.ivss1);
        Picasso.with(mcontext)
                .load(imageUpload.getUrlss2())
                .fit()
                .centerCrop()
                .into(imageViewHolder.ivss2);
        Picasso.with(mcontext)
                .load(imageUpload.getUrlss3())
                .fit()
                .centerCrop()
                .into(imageViewHolder.ivss3);
        Picasso.with(mcontext)
                .load(imageUpload.getUrlss4())
                .fit()
                .centerCrop()
                .into(imageViewHolder.ivss4);
        Picasso.with(mcontext)
                .load(imageUpload.getUrlss5())
                .fit()
                .centerCrop()
                .into(imageViewHolder.ivss5);

       /* imageViewHolder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                        Intent intent = new Intent(mcontext, Download_apk.class);
                        mcontext.startActivity(intent);
            }
        });*/

    }

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

    public class ImageViewHolder extends RecyclerView.ViewHolder {
        public TextView tvapptitle,tvdescription;
        public ImageView ivappimage,ivss1,ivss2,ivss3,ivss4,ivss5;
        public LinearLayout linearLayout;

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

            tvapptitle = itemView.findViewById(R.id.tv_dname);
            tvdescription=itemView.findViewById(R.id.tv_ddescrript);
            ivappimage = itemView.findViewById(R.id.iv_download);
            ivss1=itemView.findViewById(R.id.D1ivss1);
            ivss2=itemView.findViewById(R.id.D1ivss2);
            ivss3=itemView.findViewById(R.id.D1ivss3);
            ivss4=itemView.findViewById(R.id.D1ivss4);
            ivss5=itemView.findViewById(R.id.D1ivss5);

        }
    }

}

标签: javaandroidfirebase-realtime-database

解决方案


推荐阅读