java - 从 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);
}
}
}
解决方案
推荐阅读
- python - 如何根据另一个csv文件中的关键字提取csv文件中的句子并将其从主文件中删除
- python - 没有隐藏层和线性激活函数的神经网络应该近似线性回归?
- javascript - ajaxStop 有时在 ajaxStart 之后没有触发
- javascript - 为按钮添加启动和重置功能
- python - 使用 python 压缩文件
- c++ - 将所有 URL 组织在一个类中的一个位置
- javascript - 三元条件下的多个 OR 运算符,
- python - 将输入传递给 python 函数
- javascript - DOM中的类定义在javascript中连接
- google-speech-api - 无法使用凭证选项设置谷歌语音构造函数