Tôi đang sử dụng Picasso để tải xuống nhiều hình ảnh khác nhau. Thông thường, tôi chỉ hiển thị chúng trong một ImageView
nhưng trong trường hợp này, tôi muốn giữ một tham chiếu mạnh mẽ với chúng để tôi có thể sử dụng chúng ở những nơi khác nhau mà không cần phải tham khảo lại bộ nhớ cache hoặc tải xuống lại chúng. Dưới đây là cách tôi đang cố gắng để làm điều đó (lưu ý rằng có nhiều hơn để lớp này - Tôi vừa mới thu hẹp nó xuống đến các bộ phận có liên quan đến câu hỏi này):Picasso Tải ảnh vào mục tiêu
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);
}
}
Trong mọi trường hợp, tôi nhận được đầu ra:
on prepare load
nhưng không có gì khác. Biểu tượng của tôi luôn rỗng. Tôi biết điều này từ các lớp khác mà tôi gọi là getIcon()
.
Tôi thiếu gì ở đây? Cảm ơn vì bất kì sự giúp đỡ.
Đó là tất cả những gì tôi cần làm. Cảm ơn rất nhiều! – Alex