Picasso Carregar imagem no destino
Estou usando o Picasso para baixar várias imagens. Normalmente, eu apenas os mostro em umImageView
mas nessa situação, quero manter uma forte referência a eles para poder usá-los em locais diferentes sem precisar consultar o cache ou fazer o download novamente. Aqui está como eu estou tentando fazer isso (observe que há mais nessa classe - eu a reduzi apenas às partes que são relevantes para esta pergunta):
public class MapLayer {
private Context mContext;
private String mType;
private Drawable mIcon = null;
public MapLayer (Context context, String type) {
mContext = context;
mType = type;
downloadIcon();
}
public Drawable getIcon() {return mIcon;}
private void downloadIcon() {
String url = mContext.getString(R.string.maps_icon_url).replace("${type}", mType));
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
Log.d(TAG, "on bitmap loaded");
mIcon = new BitmapDrawable(mContext.getResources(), bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
Log.d(TAG, "on bitmap failed");
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
Log.d(TAG, "on prepare load");
mIcon = placeHolderDrawable;
}
};
ImageDownloader.getSharedInstance().load(url).into(target);
}
}
Em todos os casos, recebo a saída:
on prepare load
mas nada mais. Meu ícone é sempre nulo. Eu sei disso de outras classes onde eu chamogetIcon()
.
O que estou perdendo aqui? Obrigado por qualquer ajuda.