--- android/TrainInfo/src/dk/thoerup/traininfo/DepartureList.java 2010/06/11 14:05:24 835 +++ android/TrainInfo/src/dk/thoerup/traininfo/DepartureList.java 2010/07/10 16:03:10 981 @@ -7,8 +7,7 @@ import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.List; + import android.app.AlertDialog; import android.app.Dialog; @@ -36,7 +35,7 @@ DepartureListAdapter adapter; DepartureProvider provider; - List departures; + DepartureBean departures; int selectedItemId; //DepartureBean currentDeparture; @@ -49,7 +48,7 @@ boolean arrival = false; - @SuppressWarnings("unchecked") + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -118,8 +117,8 @@ if (savedInstanceState == null) { startDepartureFetcher(); } else { - departures = (List) savedInstanceState.getSerializable("departures"); - adapter.setDepartures(departures); + departures = (DepartureBean) savedInstanceState.getSerializable("departures"); + adapter.setDepartures(departures.entries); selectedItemId = savedInstanceState.getInt("selectedItemId"); } } @@ -133,16 +132,27 @@ outState.putInt("selectedItemId", selectedItemId); - outState.putSerializable("departures", (ArrayList) departures); + outState.putSerializable("departures", departures); } + + @Override + protected void onDestroy() { + super.onDestroy(); + + if (fetcher != null) { + fetcher.cancel(true); + } + } + + @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); selectedItemId = position; - DepartureBean dep = departures.get(selectedItemId); + DepartureEntry dep = departures.entries.get(selectedItemId); Intent intent = new Intent(this, TimetableList.class); intent.putExtra("departure", dep); @@ -220,9 +230,12 @@ pgDialog.dismiss(); if (success) { - adapter.setDepartures(departures); - if (departures.size() == 0) { - MessageBox.showMessage(DepartureList.this, "No departures found"); + DepartureList.this.getListView().setVisibility(View.GONE); //Experimental, inspired by http://osdir.com/ml/Android-Developers/2010-04/msg01198.html + adapter.setDepartures(departures.entries); + DepartureList.this.getListView().setVisibility(View.VISIBLE); + + if (departures.entries.size() == 0) { + MessageBox.showMessage(DepartureList.this, "No departures found", true); } } else { // communication or parse error AlertDialog.Builder builder = new AlertDialog.Builder(DepartureList.this); @@ -238,6 +251,7 @@ builder.setNegativeButton(getString(generic_cancel), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); + DepartureList.this.finish(); } });