I am trying to use the picasso library to loading the image store in the mediastore. When I called load(imageview, callback), the picasso call onFail instead of onSuccess. How do I know why the image was not loaded successfully?
            Asked
            
        
        
            Active
            
        
            Viewed 5.4k times
        
    58
            
            
        - 
                    1Have a look at this answered question [Picasso Library, Android: Using Error Listener][1] [1]: http://stackoverflow.com/questions/17052538/picasso-library-android-using-error-listener – LE GALL Benoît Sep 09 '14 at 12:29
 
7 Answers
188
            Use builder:
    Picasso.Builder builder = new Picasso.Builder(this);
    builder.listener(new Picasso.Listener()
    {
        @Override
        public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception)
        {
            exception.printStackTrace();
        }
    });
    builder.build().load(URL).into(imageView);
Edit
For version 2.71828 they have added the exception to the onError callback:
        Picasso.get()
            .load("yoururlhere")
            .into(imageView, new Callback() {
                @Override
                public void onSuccess() {
                }
                @Override
                public void onError(Exception e) {
                }
            })
        Kevin van Mierlo
        
- 9,554
 - 5
 - 44
 - 76
 
15
            
            
        When you use callback, the picaso will call method onSuccess and onError!
File fileImage = new File(mPathImage);
        Picasso.with(mContext).load(fileImage)
                .placeholder(R.drawable.draw_detailed_view_display)
                .error(R.drawable.draw_detailed_view_display)
                .resize(200, 200)
                .into(holder.mImageEvidence, new Callback() {
                    @Override
                    public void onSuccess() {
                        holder.mMediaEvidencePb.setVisibility(View.GONE);
                    }
                    @Override
                    public void onError() {
                        holder.mErrorImage.setVisibility(View.VISIBLE);
                    }
                });
        TVT. Jake
        
- 279
 - 2
 - 7
 
- 
                    9
 - 
                    1Method onError not offers information about the error. It only help you realize there is an error is occurring by show "mErrorImage" – TVT. Jake Apr 25 '16 at 09:24
 - 
                    
 
11
            
            
        In case you want to use Picasso with Kotlin and lambda expression it could be as short as this:
val picasso = Picasso.Builder(context)
            .listener { _, _, e -> e.printStackTrace() }
            .build()
...and then you can load image as usual:
picasso.load(url).into(imageView)
        donfuxx
        
- 11,277
 - 6
 - 44
 - 76
 
0
            
            
        val picasso = Picasso.Builder(context).listener(
                    object : Picasso.Listener{
                        override fun onImageLoadFailed(picasso: Picasso?, uri: Uri?, exception: Exception?) {
                            exception?.printStackTrace()
                            println("Picasso loading failed : ${exception?.message}")
                        }
                    }
            ).build()
picasso.load(imageUrl).into(imageView)
        Rajeev Shetty
        
- 1,534
 - 1
 - 17
 - 27
 
0
            
            
        Please try this to check logs of the Picasso
Picasso.with(getContext()).setLoggingEnabled(true);
        harishanth raveendren
        
- 534
 - 5
 - 8
 
0
            
            
        You have use picasso exception handler. Because if you are to use traditional exception handler(try / catch) it wont catch the actual exception.
var imgURL = Your image url
var imgHolder = Id of your image view
val picasso = Picasso.Builder(this@yourActivity)
            .listener { picasso, uri, exception ->
                //Here your log - Log cat - error
                Log.e("Exception ", exception.stackTraceToString())
            }
            .build()
        picasso.load(imgURL)
            .fit()
            .into(imgHolder)
        Neyomal
        
- 1,589
 - 1
 - 12
 - 14