Mapas - Overlays - Onde declarar a lista?

Boa noite,

Possuo uma aplicação, onde devo exibir Overlays em um mapa. Possuo uma classe que consome um WebService que eu mesmo criei que faz o seguinte:

  • Se conecta ao banco de dados e retorna a Latitude e a Longitude dos Overlays.

Até aí tudo bem, tem trazido os dados corretamente, mas na hora que vou criar os Overlays, eu chamo a posição da lista em que o Overlay está, mas não sei onde alimentar a lista.

Veja o código:

package org.ci.geo.route;

import java.util.ArrayList;
import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import android.graphics.Point;
import android.graphics.Canvas;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.widget.Toast;

public class HutsItemizedOverlay extends ItemizedOverlay<OverlayItem> {
	Conexao conn = new Conexao();

	List<Double> lat = new ArrayList<Double>();//aqui são declaradas as listas
	List<Double> lon = new ArrayList<Double>();
		
	public HutsItemizedOverlay(Drawable defaultMarker) {
		super(defaultMarker);               //se eu alimentar a lista neste construtor, não dá certo
		boundCenterBottom(defaultMarker);   //o compilador aceita, mas a aplicação trava
		populate();
		
	}

	@Override
	public GeoPoint getCenter() {
		Integer averageLat = 0;
		Integer averageLon = 0;
		for (GeoPoint point : hutPoints) {
			averageLat += point.getLatitudeE6();
			averageLon += point.getLongitudeE6();
		}
		averageLat /= hutPoints.length;
		averageLon /= hutPoints.length;
		return new GeoPoint(averageLat, averageLon);
	}

	@Override
	public void draw(Canvas canvas, MapView mapView, boolean shadow) {
		super.draw(canvas, mapView, false);
	}
	
	public GeoPoint hutPoints[] = new GeoPoint[] { 
			new GeoPoint((int) (lat.get(0) * 1E6), (int) (lon.get(0) * 1E6)),//aqui eu consumo a lista, mas ela ainda não está alimentada
			//new GeoPoint(-25447305,-49307184),

	};
	
	@Override
	protected OverlayItem createItem(int i) {
		OverlayItem item = new OverlayItem(hutPoints[i], "Nome do Local",
				"Promocao - Detalhe");
		return item;
	}

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

	public boolean onTap(GeoPoint geoPoint, MapView mapView) {
		OverlayItem item = this.createItem(1);
		Point point = mapView.getProjection().toPixels(geoPoint, null);
		RectF rectF = new RectF(point.x - 5, point.y - 5, point.x + 5,
				point.y + 5);
		boolean pontoClicado = rectF.contains(point.x, point.y);
		if (pontoClicado) {
			Toast.makeText(
					mapView.getContext(),
					"Você clicou aqui: " + item.getTitle() + "Acesse "
							+ item.getSnippet(), Toast.LENGTH_LONG).show();
			return true;
		}
		return super.onTap(geoPoint, mapView);
	}

}

Alguém pode me ajudar?