【问题标题】:display image from firebase database in imageview在 imageview 中显示来自 firebase 数据库的图像
【发布时间】:2018-02-09 00:08:29
【问题描述】:

这个问题没有直接的答案,我尝试了各种方法。我需要将存储在 Firebase 数据库中的图像显示在 ImageView 中。

这是我当前的代码,它不起作用:

mUsersDB_photoUrl.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String photoUrl = dataSnapshot.child("photoUrl").getValue(String.class);
            try {
                Picasso.with(DisplayActivity.this).load(photoUrl).placeholder(R.mipmap.ic_launcher).into(Photo);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

调用用户名的方法有效:

mUsersDB_name.addValueEventListener(new ValueEventListener() {
        @Override

        public void onDataChange(DataSnapshot dataSnapshot) {
            Name.setText(dataSnapshot.getValue(String.class));

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

我一点都不擅长,我正在自学 Firebase。欢迎指点和指导。

【问题讨论】:

    标签: java android firebase firebase-realtime-database firebase-storage


    【解决方案1】:

    您使用的是 Picasso,所以我建议您在获取图像时使用 getDownloadUrl()。

    StorageReference storageRef = storage.getReference().child("profiles").child(myAccount.getUID()).child("profile");//reach out to your photo file hierarchically
            storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    Log.d("URI", uri.toString()); //check path is correct or not ?
                   Picasso.with(DisplayActivity.this).load(uri.toString()).into(imageView);
                }
            }).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle errors
    }
    });
    

    【讨论】:

    • 嗨,我对“Picasso.with(context)”有疑问,它对“context”这个词说“无法解析符号” - 从来没有使用过日志或毕加索的上下文我不是确定如何解决它。
    • 将其替换为 'DisplayActivity.this' 或 'getContext()'
    • @TestUser 在搜索框中使用 Android Monitor 选项类型“URI”并检查路径是否有效。如果不是,则更改 'storage.getReference().child("");
    【解决方案2】:

    okey .. 首先在此代码行下方设置 Log 并检查照片 url 是否有效。

    String photoUrl = dataSnapshot.child("photoUrl").getValue(String.class);
    

    然后使用 glide 将图像设置为 ImageView

    Glide.with([CONTEXT]).load([IMAGE_URL]).into([IMAGE_VIEW]);
    

    注意:如果您想使用 Picasso,则必须将您的上下文传递给 with([CONTEXT])

    【讨论】:

      【解决方案3】:

      我最终只是更改了我的数据库引用。 (第一行代码)

      完美运行。

      mUsersDB.child(user_id).addValueEventListener(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {
                  String photoUrl = dataSnapshot.child("photoUrl").getValue(String.class);
                  try {
                      Picasso.with(DisplayActivity.this).load(photoUrl).placeholder(R.mipmap.ic_launcher).into(disPhoto);
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
      
              }
      
              @Override
              public void onCancelled(DatabaseError databaseError) {
      
              }
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 2021-01-15
        • 1970-01-01
        • 2013-05-19
        相关资源
        最近更新 更多