簡體   English   中英

發布的圖像未出現在Firebase回收器視圖中

[英]Posted image is not appearing in Firebase Recycler View

我正在嘗試從Firebase數據庫檢索所有用戶帖子,並希望借助Recycler View和Firebase Recycler Adapter在Main Activity上顯示它。 但是在成功將圖像上傳到Firebase數據庫之后,我可以在firebase控制台的storage部分中看到上傳的圖像,但是在數據庫部分中,它顯示類似-

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並向我提供幫助,並希望完成此College Project。

嘗試改變

String userFullName = dataSnapshot.child("fullname").getValue().toString();
String userProfileImage = dataSnapshot.child("profileimage").getValue().toString();

String userFullName = dataSnapshot.child("fullname").getValue(String.class);
String userProfileImage = dataSnapshot.child("profileimage").getValue(String.class);

編輯:試試這個

dateRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri downloadUrl) 
    {                
       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();
                        }

                    }
                });

            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM