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);