Как слушать Пикассо (Android) загрузить полные события?
есть ли способ слушать события от Пикассо при использовании строителя, как:
Picasso.with(getContext()).load(url).into(imageView);
Я пытаюсь позвонить requestLayout()
и invalidate()
на родительском GridView
поэтому он будет правильно изменять размер, но я не знаю, как установить прослушиватель или обратный вызов.
Я вижу, что Пикассо имеет сообщение об ошибке событий, но есть ли событие успеха?
7 ответов:
можно использовать
Callback
для получения событий onSuccess и onError. Просто добавьте новый обратный вызов к вашему запросу следующим образом:Picasso.with(getContext()) .load(url) .into(imageView, new com.squareup.picasso.Callback() { @Override public void onSuccess() { } @Override public void onError(Exception ex) { } });
затем вы можете выполнить любые изменения и модификации в обратном вызове onSuccess.
Если вам нужно получить доступ к растровому изображению перед его загрузкой в представление, попробуйте использовать :
private Target target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { } @Override public void onBitmapFailed() { } }
в вызывающем методе:
Picasso.with(this).load("url").into(target);
В идеале вы бы реализовали Target на объекте view или view holder напрямую.
надеюсь, что это помогает
квадрат в последнее время обновил целевой класс, и теперь есть больше методов для переопределения (
onPrepareLoad
иonBitmapFailed
):Target target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { } @Override public void onBitmapFailed(Drawable errorDrawable) { } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { } };
и вы все еще должны использовать:
Picasso.with(context).load(url).into(target);
отвечая на вопрос @Jas в качестве комментария к ответу MrEngineer13 (поскольку у меня недостаточно репутации, чтобы комментировать в любом ответе), вы должны использовать
error()
метод перед регистрациейCallback
наinto()
способ, например:Picasso.with(getContext()) .load(url) .error(R.drawable.error_placeholder_image) .into(imageView, new com.squareup.picasso.Callback() { @Override public void onSuccess() { //Success image already loaded into the view } @Override public void onError() { //Error placeholder image already loaded into the view, do further handling of this situation here } } );
private final Callback mImageCallback = new Callback() { @Override public void onSuccess() { startPostponedEnterTransition(); } @Override public void onError() { startPostponedEnterTransition(); } }; RequestCreator creator = Picasso.with(getActivity()).load(list.get(position).getId()); creator.into(imageView, mImageCallback);
Попробуй Такое
Picasso.with(context) .load(services.get(position).getImageInactive()) .into(holder.icon, new Callback() { @Override public void onSuccess() { holder.imageLoad.setVisibility(View.GONE); } @Override public void onError() { holder.icon.setImageResource(R.drawable.ic_error_image_load); } });
в дополнение к другим ответам, Если вы не знаете, где использовать исходный вид изображения, например
ImageView myIV
:Оригинал:
Picasso.with(activity).load(url).into(myIV);
Новый (внутри
onBitmapLoaded()
наnew Target()
):public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { myIV.setImageBitmap(bitmap); }