Есть ли способ прослушивать события от Пикассо при использовании конструктора, например:
Picasso.with(getContext()).load(url).into(imageView);
Я пытаюсь позвонить requestLayout()
и invalidate()
на родителях , GridView
так что будет правильно изменить размер , но я не знаю , как установить слушатель или обратный вызов.
Я вижу, что у Picasso есть отчет об ошибках, но есть ли успешное событие?
.error(R.drawable.error_placeholder_image)
для установки изображения ошибкиЕсли вам нужно получить доступ к растровому изображению до его загрузки в представление, попробуйте использовать:
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 непосредственно на представлении или объекте-держателе представления.
Надеюсь это поможет
источник
Отвечая на последующий вопрос @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 } } );
источник
Square недавно обновила класс Target, и теперь есть больше методов для переопределения (
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) { } };
И вам все равно придется использовать:
источник
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
:Оригинал:
Новый (внутри
onBitmapLoaded()
изnew Target()
):public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { myIV.setImageBitmap(bitmap); }
источник