如何将参数传递给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)); 
+0

感谢回答。我有深入的封装概念。 – sunpeijie