无法在图像视图中设置Firebase图像Uri

时间:2017-02-03 22:05:09

标签: android firebase firebase-storage

我正在从firebase数据库中检索图像并在图像视图中设置它。 我使用以下代码。

mStorageRef.child("Book_Photos/"+firstBook.bid).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                Toast.makeText(getApplicationContext(), "GET IMAGE SUCCESSFUL",Toast.LENGTH_LONG).show();
                if(uri==null){
                    Toast.makeText(getApplicationContext(), "URI IS NULL",Toast.LENGTH_LONG).show();
                }
                try {
                    ImageView image2;
                    image2=(ImageView)findViewById(R.id.imageView);
                    image2.setImageURI(null);
                    image2.setImageURI(uri);

                }
                catch (Exception e){

                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                Toast.makeText(getApplicationContext(), "GET IMAGE FAILED",Toast.LENGTH_LONG).show();
                // Handle any errors
            }
        });

我正在检索的图像未被设置。 &#34; GET IMAGE SUCCESSFUL&#34;吐司的作品。 &#34; URI是空的&#34;吐司不起作用。 命令image2.setImageURI(null)有效。

只是image2.setImageURI(uri)无效。

2 个答案:

答案 0 :(得分:8)

您无法将图像从互联网直接加载到ImageView。但您可以使用Glide之类的库来执行此操作。要将Glide添加到您的应用中,您需要将此行添加到您的家属:

implementation 'com.github.bumptech.glide:glide:4.8.0'

加载你的形象:

Glide
    .with(getContext())
    .load(uri) // the uri you got from Firebase
    .centerCrop()
    .into(image2); //Your imageView variable

答案 1 :(得分:2)

您也可以使用Picasso库。将其添加到您的gradle

  

编译'com.squareup.picasso:picasso:2.5.2'

然后加载图片,

  

Picasso.with(YourActivity.this).load(URI).into(图像2);