如何将参数传递给Glide回调方法?
问题描述:
我使用百度地图来显示从服务器获取的商店,包含图片网址。我使用Glide为地图设置图标。如何将参数传递给Glide回调方法?
这是我使用添加标记到地图的方法。
private void setMarks(List<ShopList> shops) {
for(ShopList shopItem : shops){
double latitude = shopItem.getLat();
double longitude = shopItem.getLng();
LatLng latLng = new LatLng(latitude,longitude);
String shopName = shopItem.getName();
OverlayOptions textOption = new TextOptions()
.text(shopName)
.fontSize(50)
.position(latLng);
mBaiduMap.addOverlay(textOption);
Glide.with(mContext.getApplicationContext())
.load(shopItem.getCategory_image())
.asBitmap()
.placeholder(R.drawable.ic_shop_image_loading)
.error(R.drawable.ic_shop_image_load_error)
.override(SizeUtils.dip2px(mContext,128),SizeUtils.dip2px(mContext,128))
.centerCrop()
.into(target);
}
}
这里是滑翔回调代码。
private SimpleTarget<Bitmap> target = new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
BitmapDescriptor descriptor = BitmapDescriptorFactory.fromBitmap(resource);
Marker marker = (Marker) mBaiduMap.addOverlay(new MarkerOptions().position(latLng).icon(descriptor));
mMarkers.add(marker);
}
};
我不能提供latLang的参数,所以在onResourceReady我不能初始化标记,不能添加标记mMarkers也。我能做些什么来将latLang与特定的位图关联起来?
答
您必须创建自定义Target
。
public class MyTarget extends SimpleTarget<Bitmap> {
private final LatLng latLng;
public MyTarget(LatLng latLng) {
this.latLng = latLng;
}
@Override
public void onResourceReady(final Bitmap resource, final GlideAnimation<? super Bitmap> glideAnimation) {
// use your `latLng`
}
}
而且用这样的方式:
Glide.with(...)
...
.into(new MyTarget(latLng));
感谢回答。我有深入的封装概念。 – sunpeijie