2012-03-22 11 views
0

populate()を呼び出してコードを最適化したい。すべてのOverlayItemsを追加した後でなければなりません。populated()への呼び出しが1つだけのItemizedOverlay。

public class ZoneBase extends ItemizedOverlay { 

//------- Class base members 

//Context mContext; 
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 
boolean shadow=false; 
int gameType; 
Context mContext; 

// ----------------------------------

public ZoneBase(Drawable Marker,ZoneProperties z,Context context,boolean ev) { 

    super(boundCenter(Marker)); 

    OverlayItem overlayitem = new OverlayItem(z.point, "Hello", "Stefan cel Mare!"); 

    addOverlay(overlayitem); 

    Marker=null; 
    if(ev) 
     gameType = z.gameType; 
    //System.gc(); 

    mContext = context; 
} 

コンストラクタでは、最初にdrawableでスーパーメソッドを呼び出す必要がありますが、本当に必要なのは、このクラスに配列を渡し、forの中にdrawableを作成して追加することです。次にpopulate()を呼び出します。 。たぶん、私はItemizedOverlayではなく、他のクラスを拡張する必要があります。ありがとうございました! :)

答えて

1

異なるマーカーを設定する場合は、コンストラクタ内で行う必要があります。ここに例があります。

private someMethod() { 
    final MapView mapView = (MapView) findViewById(...); 
    final LiveOverlay liveOverlay = new LiveOverlay(); 
    mapView.getOverlays().clear(); 
    mapView.getOverlays().add(liveOverlay); 
} 

private class LiveOverlay extends ItemizedOverlay<OverlayItem> { 

    private LiveOverlay() { 
     super(null); 

     final ArrayList<OverlayItem> locationsList = new ArrayList<OverlayItem>(); 
     for (...) { 
      final GeoPoint geoPoint = new GeoPoint(...); 
      final OverlayItem overlayItem = new OverlayItem(geoPoint, ...); 
      final Drawable marker = ...; 
      marker.setBounds(...); 
      overlayItem.setMarker(marker); 
      locationsList.add(overlayItem); 
     } 
     setLastFocusedIndex(-1); 
     populate(); 
    } 

    @Override 
    public int size() { 
     return locationsList.size(); 
    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     return locationsList.get(i); 
    } 

    @Override 
    public void draw(Canvas canvas, MapView mView, boolean shadow) { 
     super.draw(canvas, mView, false); 
    } 
} 
関連する問題