Apakah ada cara untuk mendengarkan acara dari Picasso saat menggunakan pembuatnya seperti:
Picasso.with(getContext()).load(url).into(imageView);
Saya mencoba menelepon requestLayout()
dan invalidate()
menggunakan orang tua GridView
sehingga ukurannya akan diubah dengan benar, tetapi saya tidak tahu cara menyetel pendengar atau panggilan balik.
Saya melihat bahwa Picasso memiliki pelaporan peristiwa kesalahan, tetapi adakah peristiwa yang berhasil?
.error(R.drawable.error_placeholder_image)
untuk menyetel gambar kesalahanJika Anda perlu mengakses bitmap sebelum dimuat ke tampilan, coba gunakan:
private Target target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { } @Override public void onBitmapFailed() { } }
Dalam metode panggilan:
Picasso.with(this).load("url").into(target);
Idealnya Anda akan menerapkan Target pada tampilan atau objek view holder secara langsung.
Semoga ini membantu
sumber
Menjawab pertanyaan tindak lanjut @Jas sebagai komentar atas jawaban MrEngineer13 (karena saya tidak memiliki reputasi yang cukup untuk berkomentar dalam jawaban apa pun), Anda harus menggunakan
error()
metode ini sebelum mendaftarCallback
diinto()
metode, misalnya: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 } } );
sumber
Square baru-baru ini memperbarui kelas Target dan sekarang ada lebih banyak metode untuk diganti (
onPrepareLoad
danonBitmapFailed
):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) { } };
Dan Anda masih harus menggunakan:
sumber
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);
sumber
Coba ini
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); } });
sumber
Sebagai pelengkap jawaban lain, jika Anda tidak tahu di mana harus menggunakan tampilan gambar asli, misalnya
ImageView myIV
:Asli:
Baru (dalam
onBitmapLoaded()
darinew Target()
):public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { myIV.setImageBitmap(bitmap); }
sumber