Java 发布的图像未显示在Firebase回收器视图中
我正在尝试从firebase数据库检索所有用户的帖子,并希望通过help Recycler视图和firebase Recycler适配器将其显示在主活动中。 但在成功地将图像上传到Firebase数据库后,我可以在Firebase控制台的存储部分看到上传的图像,但在数据库部分,它显示了如下内容- com.google.android.gms.tasks。zzu@3c50f45 所以我认为问题在于这一行代码:Java 发布的图像未显示在Firebase回收器视图中,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我正在尝试从firebase数据库检索所有用户的帖子,并希望通过help Recycler视图和firebase Recycler适配器将其显示在主活动中。 但在成功地将图像上传到Firebase数据库后,我可以在Firebase控制台的存储部分看到上传的图像,但在数据库部分,它显示了如下内容- com.google.android.gms.tasks。zzu@3c50f45 所以我认为问题在于这一行代码: downloadUrl=task.getResult().getStorage().ge
downloadUrl=task.getResult().getStorage().getDownloadUrl().toString()代码>
代码:
private Uri ImageUri;
private StorageReference PostsImagesRefrence;
private DatabaseReference UsersRef, PostsRef;
PostsImagesRefrence = FirebaseStorage.getInstance().getReference();
PostsRef = FirebaseDatabase.getInstance().getReference().child("Posts");
StorageReference filePath = PostsImagesRefrence.child("Post Images").child(ImageUri.getLastPathSegment() + postRandomName + ".jpg");
filePath.putFile(ImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>()
{
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task)
{
if(task.isSuccessful())
{
downloadUrl = task.getResult().getStorage().getDownloadUrl().toString();
Toast.makeText(PostActivity.this, "image uploaded successfully to Storage...", Toast.LENGTH_SHORT).show();
SavingPostInformationToDatabase();
}
else
{
String message = task.getException().getMessage();
Toast.makeText(PostActivity.this, "Error occured: " + message, Toast.LENGTH_SHORT).show();
}
}
});
private-Uri-ImageUri;
私有存储参考后期刷新;
私有数据库引用UsersRef,PostsRef;
PostSimagesReference=FirebaseStorage.getInstance().getReference();
PostsRef=FirebaseDatabase.getInstance().getReference().child(“Posts”);
StorageReference filePath=postSimagesFrence.child(“Post-Images”).child(ImageUri.getLastPathSegment()+postRandomName+“.jpg”);
filePath.putFile(ImageUri).addOnCompleteListener(新的OnCompleteListener()
{
@凌驾
未完成的公共void(@NonNull任务)
{
if(task.issusccessful())
{
downloadUrl=task.getResult().getStorage().getDownloadUrl().toString();
Toast.makeText(PostActivity.this,“图像已成功上载到存储器…”,Toast.LENGTH_SHORT.show();
将PostInformation保存到数据库();
}
其他的
{
字符串消息=task.getException().getMessage();
Toast.makeText(PostActivity.this,“出现错误:+消息,Toast.LENGTH\u SHORT.show();
}
}
});
设计视图和实际输出图像:
private Uri ImageUri;
private StorageReference PostsImagesRefrence;
private DatabaseReference UsersRef, PostsRef;
PostsImagesRefrence = FirebaseStorage.getInstance().getReference();
PostsRef = FirebaseDatabase.getInstance().getReference().child("Posts");
StorageReference filePath = PostsImagesRefrence.child("Post Images").child(ImageUri.getLastPathSegment() + postRandomName + ".jpg");
filePath.putFile(ImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>()
{
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task)
{
if(task.isSuccessful())
{
downloadUrl = task.getResult().getStorage().getDownloadUrl().toString();
Toast.makeText(PostActivity.this, "image uploaded successfully to Storage...", Toast.LENGTH_SHORT).show();
SavingPostInformationToDatabase();
}
else
{
String message = task.getException().getMessage();
Toast.makeText(PostActivity.this, "Error occured: " + message, Toast.LENGTH_SHORT).show();
}
}
});
请尝试为我提供正确的代码,帮助我,因为我是一个新手,不了解Android Studio,并且希望完成这个大学项目。尝试更改
String userFullName = dataSnapshot.child("fullname").getValue().toString();
String userProfileImage = dataSnapshot.child("profileimage").getValue().toString();
到
编辑:试试这个
dateRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri downloadUrl)
{
downloadUrlString = downloadUrl.toString();
}
});
dateRef.getDownloadUrl().addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公共无效(Uri下载URL)
{
downloadUrlString=downloadUrl.toString();
}
});
解决了这个问题,我使用旧方法将图像存储到firebase数据库
为解决此问题,已进行了以下更改:
final StorageReference filePath = PostsImagesRefrence.child("Post Images").child(ImageUri.getLastPathSegment() + postRandomName + ".jpg");
final UploadTask uploadTask =filePath.putFile(ImageUri);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e)
{
String message =e.toString();
Toast.makeText(PostActivity.this, "Error occured: " + message, Toast.LENGTH_SHORT).show();
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>()
{
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
{
Toast.makeText(PostActivity.this, "Image uploaded successfully to Storage...", Toast.LENGTH_SHORT).show();
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>()
{
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception
{
if (!task.isSuccessful())
{
throw task.getException();
}
downloadUrl= filePath.getDownloadUrl().toString();
return filePath.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>()
{
@Override
public void onComplete(@NonNull Task<Uri> task)
{
if (task.isSuccessful())
{
downloadUrl = task.getResult().toString();
Toast.makeText(PostActivity.this, "Stored Image Successfully to Database", Toast.LENGTH_SHORT).show();
SavingPostInformationToDatabase();
}
}
});
}
final-StorageReference filePath=PostsImagesRefrence.child(“Post-Images”).child(ImageUri.getLastPathSegment()+postRandomName+“.jpg”);
final UploadTask UploadTask=filePath.putFile(ImageUri);
uploadTask.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e)
{
字符串消息=e.toString();
Toast.makeText(PostActivity.this,“出现错误:+消息,Toast.LENGTH\u SHORT.show();
}
}).addOnSuccessListener(新的OnSuccessListener()
{
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot)
{
Toast.makeText(PostActivity.this,“图像已成功上载到存储器…”,Toast.LENGTH_SHORT.show();
Task urlTask=uploadTask.continueWithTask(新的Continuation()
{
@凌驾
公共任务(@NonNull Task Task)引发异常
{
如果(!task.issusccessful())
{
抛出task.getException();
}
downloadUrl=filePath.getDownloadUrl().toString();
返回filePath.getDownloadUrl();
}
}).addOnCompleteListener(新的OnCompleteListener()
{
@凌驾
未完成的公共void(@NonNull任务)
{
if(task.issusccessful())
{
downloadUrl=task.getResult().toString();
Toast.makeText(PostActivity.this,“将图像成功存储到数据库”,Toast.LENGTH_SHORT.show();
将PostInformation保存到数据库();
}
}
});
}
那么这个代码有什么问题,只有图像没有显示?你的postImage
是否为你的图像保留了正确的值?尝试记录它的值。@AlexMamo我想你现在可以回答了,我已经更新了帖子。谢谢你的回答,但它不起作用。告诉我这行代码正确吗?downloadUrl=task.getResult().getStorage().getDownloadUrl().toString();
是否检查了数据库是否已填充,图像是否已正确上载?