java - 发布的图片未出现在 Firebase Recycler 视图中
问题描述
我正在尝试从 firebase 数据库中检索所有用户帖子,并希望在 Recycler View 和 Firebase Recycler Adapter 的帮助下将其显示在 Main Activity 上。但是在成功将图像上传到 Firebase 数据库后,我可以在 firebase 控制台的存储部分看到上传的图像,但在数据库部分它显示类似 -
com.google.android.gms.tasks.zzu@3c50f45
所以我认为问题出在这行代码上:
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();
}
}
});
设计视图和实际输出图像:
请尝试为我提供正确的代码,帮助我,因为我是新手,不了解 Android Studio,并且想完成这个大学项目。
解决方案
解决了,我使用旧方法将图像存储到 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();
}
}
});
}
推荐阅读
- python - Python:时间戳中秒后的小数位四舍五入
- c# - Wrong Enum index when serializing an Enum field (Unity)
- developer-tools - Firefox 开发者版在控制台中显示所有默认文档属性
- javascript - React JS如何在输入字段中显示密码5秒然后隐藏?
- python - 将“日期”数据转换为 datetime64[ns] 类型
- xml - 使用 vb.net 在 xml 中编辑标签参数
- reactjs - 单击nabber链接时React BrowserRouter不呈现
- python-3.x - 字典中的多个键
- python - 如何从 Python 中的文本中删除空行?
- python - 读取 csv 文件时时间序列预测中的值错误