--- android/TrainInfo/src/dk/thoerup/traininfo/TrainInfoList.java 2009/09/01 19:40:02 293 +++ android/TrainInfo/src/dk/thoerup/traininfo/TrainInfoList.java 2009/09/01 20:28:55 294 @@ -2,16 +2,19 @@ import java.util.ArrayList; import java.util.List; +import java.util.Locale; import android.app.Dialog; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Intent; +import android.location.Address; +import android.location.Geocoder; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; - +import android.util.Log; import android.view.View; import android.widget.ListView; import dk.thoerup.traininfo.util.MessageBox; @@ -41,8 +44,8 @@ super.onCreate(savedInstanceState); setContentView(R.layout.main); - StationLocator.removeMockLocation(this); - //StationLocator.injectMockLocation(this); + //StationLocator.removeMockLocation(this); + StationLocator.injectMockLocation(this); adapter = new StationListAdapter(this); setListAdapter(adapter); @@ -146,20 +149,53 @@ @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); - - + StationBean station = stations.get(position); - + + double latitude = station.getLatitude(); + double longitude = station.getLongitude(); + String addr = station.getAddress(); + + if (addr == null || addr.trim().equals("") ) + addr = lookupAddress(latitude, longitude); + Intent intent = new Intent(this, DepartureList.class); intent.putExtra("name", station.getName()); - intent.putExtra("address", station.getAddress()); + intent.putExtra("address", addr); intent.putExtra("distance", station.getDistance()); - intent.putExtra("latitude", station.getLatitude()); - intent.putExtra("longitude", station.getLongitude()); + intent.putExtra("latitude", latitude); + intent.putExtra("longitude", longitude); + intent.putExtra("code", station.getCode()); startActivity(intent); } + String lookupAddress(double latitude, double longitude) { + + Geocoder coder = new Geocoder(this, new Locale("da")); + StringBuilder sb = new StringBuilder(); + Log.i("lookupaddr", "" + latitude + "/" + longitude); + try { + List
addressList = coder.getFromLocation(latitude, longitude, 1); + Address addr = addressList.get(0); + + + int max = addr.getMaxAddressLineIndex(); + for (int i=0; i0) + sb.append(", "); + + sb.append(addr.getAddressLine(i)); + } + + + } catch (Exception e) { + Log.e("DepartureList", "geocoder failed", e); + } + + return sb.toString(); + } + class LocatorTask extends AsyncTask { @Override