2015-03-25 19 views
6

Sto cercando di caricare una serie di 20 URL in background con Picasso. Finora ho il codice successivo:Caricamento di più immagini con Picasso sullo sfondo

Log.d("GAME", "Loading all images"); 
for (int i = gamePieces.length-1; i >= 0; i--) { 
    GamePiece p = gamePieces[i]; 
    Log.d("GAME", "I will load " + p.getImage()); 
    Picasso.with(context).load(p.getImage()).into(target); 
} 
//loading the first one 
Picasso.with(context).load(piece.getImage()).into(target); 

E il mio oggetto target è la prossima:

Target target = new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
      Log.d("GAME", "Image loaded" + ++test); 
      gameImage.setImageBitmap(bitmap); //ImageView to show the images 
     } 

     @Override 
     public void onBitmapFailed(Drawable arg0) {} 

     @Override 
     public void onPrepareLoad(Drawable arg0) {} 
    }; 

voglio pre caricare le immagini in modo che io possa mostrare uno per uno nella ImageView qualsiasi momento l'utente fa clic su un pulsante.

La prima immagine si sta caricando così velocemente (è bello) ma le altre immagini nel ciclo for non vengono mai caricate. Come posso risolvere questo? ho bisogno che le immagini inizino a caricarsi nel ciclo for.

+0

1.) Mantenere SEMPRE un forte riferimento agli obiettivi Picasso da qualche parte perché Picasso stesso solo k eep a WeakReference - e il Target sarà spazzato via prima del caricamento dell'immagine. 2.) Non ne sono del tutto sicuro, ma dal codice sorgente sembra che Picasso gestirà solo una richiesta per ogni istanza di Target o ImageView che passi in un 'in()' - magari dai uno sguardo a te stesso (dis-)Confermare. –

+0

@ david.mihola Come posso mantenere un forte riferimento agli obiettivi Picasso? Cosa intendi con "forse dare un'occhiata a te (dis-) conferma" è un metodo? –

risposta

0

forse si può provare a fare quanto segue:

Picasso mPicasso = Picasso.with(context); //Single instance 

//if you are indeed loading the first one this should be in top, before the iteration. 
Picasso.with(context).load(piece.getImage()).into(target); 

Log.d("GAME", "Loading all images"); 
for (int i = gamePieces.length-1; i >= 0; i--) { 

    GamePiece p = gamePieces[i]; 
    Log.d("GAME", "I will load " + p.getImage()); 
    mPicasso.load(p.getImage()).into(target); 

} 

voi tutti i giorni può fare riferimento agli esempi here

Problemi correlati