Search code examples
androidcallbackdrawabletargetpicasso

android get Drawable image after picasso loaded


I am using Picasso library to load image from url. The code I used is below.

Picasso.with(getContext()).load(url).placeholder(R.drawable.placeholder)
                .error(R.drawable.placeholder).into(imageView);

What I wanna do is to get the image that loaded from url. I used

Drawable image = imageView.getDrawable();

However, this will always return placeholder image instead of the image load from url. Do you guys have any idea? How should I access the drawable image that it's just loaded from url.

Thanks in advance.


Solution

  • This is because the image is loading asynchronously. You need to get the drawable when it is finished loading into the view:

       Target target = new Target() {
              @Override
              public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                  imageView.setImageBitmap(bitmap);
                  Drawable image = imageView.getDrawable();
              }
    
            @Override
            public void onBitmapFailed(Drawable errorDrawable) {}
    
            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {}
       };
    
       Picasso.with(this).load("url").into(target);