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