Picasso ejecutar primero no llamar onBitmapLoaded in for loop

Tengo problema con conseguir el uso del mapa de bits Picasso adentro para el lazo.

No se llama onBitmapLoaded en la primera ejecución .

Segunda vez que lo llamó

for (int i = 0; i < 3; i++) { final int k=i; Picasso.with(this) .load(ListA.get(i).getImage()) //image .resize(100, 100) .transform(new ImageTrans_CircleTransform()) .into(new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { Log.i("load", "Ok " + k); //use bitmap for add marker to map } @Override public void onBitmapFailed(Drawable errorDrawable) { } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { Log.i("load", "first " + k); } }); } 

Iniciar sesión

 11-04 16:42:22.222 11677-11677/com.tenten I/load﹕ first___0 11-04 16:42:22.222 11677-11677/com.tenten I/load﹕ first___1 11-04 16:42:22.232 11677-11677/com.tenten I/load﹕ first___2 

Uso picasso para obtener bitmap de la imagen de la lista.

Necesito bitmap no imageview.

Gracias. :RE

Un problema común con el uso de los objetivos de Picasso es que la gente no mantiene fuertes referencias a ellos. Esto da como resultado que los objetivos estén funcionando al azar, ya que a veces son recogidos por el GC antes de ser terminados, ya veces viven el tiempo suficiente para llamar a la llamada.

Lo que tiene que hacer es almacenar esas devoluciones de llamada en alguna parte hasta que hayan terminado. He aquí un ejemplo:

 final List<Target> targets = new ArrayList<Target>(); for (int i = 0; i < 3; i++) { final int k=i; Target target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { Log.i("Targets", "Loaded: " + k); targets.remove(this); } @Override public void onBitmapFailed(Drawable errorDrawable) { targets.remove(this); } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { Log.i("Targets", "Preparing: " + k); } } targets.add(target); Picasso.with(this) .load(ListA.get(i).getImage()) // Start loading the current target .resize(100, 100) .into(target); } 

Para cerciorarse de que la lista no consiga GC'd también, hace a targets una variable global.

  • Elementos compartidos de Android con Picasso
  • Imageview Roundcorner no funciona para las cuatro esquinas
  • Cómo configurar un @BindingAdapter con Picasso?
  • Cómo probar si una imagen está completamente cargada con Picasso
  • Android + Picasso: cambiar la caducidad del caché de URL
  • Cargando imágenes con Picasso desde el almacenamiento interno
  • Almacenamiento en caché de disco Picasso
  • Uso de Picasso con Image Getter
  • Picasso caché con diferentes transformaciones aplicadas
  • ImageView con mapas de bits descargados desde URL (modo de repetición de mosaico)
  • ¿No soporta Picasso para descargar imágenes que utilizan el protocolo https
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.