Ich benutze Picasso, um verschiedene Bilder herunterzuladen. Normalerweise zeige ich diese nur in einer ImageView
an, aber in dieser Situation möchte ich eine starke Referenz zu ihnen halten, so dass ich sie an verschiedenen Orten verwenden kann, ohne auf den Cache zurückgreifen oder sie erneut herunterladen zu müssen. Hier ist, wie ich versuche, das zu tun (beachten Sie, dass es mehr zu dieser Klasse ist - ich habe nur verengt es auf die Teile nach unten, die auf diese Frage relevant sind):Picasso Bild in Ziel laden
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);
}
}
In jedem Fall ich die Ausgabe:
on prepare load
aber sonst nichts. Mein Symbol ist immer Null. Ich kenne das aus anderen Klassen, wo ich getIcon()
anrufen.
Was fehlt mir hier? Danke für jede Hilfe.
Das war alles was ich tun musste. Danke vielmals! – Alex