Picasso fornisce un'interfaccia generica Target
che è possibile utilizzare per implementare la propria destinazione dell'immagine. In particolare, è necessario eseguire l'override di onBitmapLoaded
per popolare il proprio indicatore.
Un'implementazione di base è riportata di seguito.
public class PicassoMarker implements Target {
Marker mMarker;
PicassoMarker(Marker marker) {
mMarker = marker;
}
@Override
public int hashCode() {
return mMarker.hashCode();
}
@Override
public boolean equals(Object o) {
if(o instanceof PicassoMarker) {
Marker marker = ((PicassoMarker) o).mMarker;
return mMarker.equals(marker);
} else {
return false;
}
}
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
mMarker.setIcon(BitmapDescriptorFactory.fromBitmap(bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
}
Si potrebbe usare in questo modo -
marker = new PicassoMarker(myMarker);
Picasso.with(MainActivity.this).load(URL).into(marker);
Nota Picasso detiene solo una settimana riferimento al Target
passato a into
. Pertanto, è necessario che il riferimento esista finché l'immagine non viene caricata per evitare che i richiami vengano eliminati dal garbage collector.
Come si fa a farlo? – WeVie
Vedi modifica, fornisco un'implementazione di base – iagreen
Hey @iagreen Mostra solo il marcatore Android predefinito non l'immagine, per favore aiutami per questo. E il metodo onBitmapLoaded non è stato chiamato. –