Java 发布的图像未显示在Firebase回收器视图中

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

我正在尝试从firebase数据库检索所有用户的帖子,并希望通过help Recycler视图和firebase Recycler适配器将其显示在主活动中。 但在成功地将图像上传到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();

                    }

                }
            });
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();
是否检查了数据库是否已填充,图像是否已正确上载?