package dk.thoerup.traininfo; import static dk.thoerup.traininfo.R.string.stationlistadapter_distance; import java.text.NumberFormat; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import dk.thoerup.android.traininfo.common.StationBean; import dk.thoerup.android.traininfo.common.StationEntry; public class StationListAdapter extends BaseAdapter { LayoutInflater inflater; StationBean stations; Context context; NumberFormat number = NumberFormat.getNumberInstance(); public StationListAdapter(Context context) { super(); this.context = context; inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); number.setMaximumFractionDigits(1); number.setMinimumFractionDigits(1); } @Override public int getCount() { if (stations != null) return stations.entries.size(); else return 0; } @Override public Object getItem(int position) { return null; } public StationEntry getStation(int position) { return stations.entries.get(position); } @Override public long getItemId(int position) { return position; } public void setStations(StationBean stations) { this.stations = stations; notifyDataSetChanged(); } @Override public View getView(int position, View convertView, ViewGroup parent) { StationEntry station = stations.entries.get(position); View root = inflater.inflate(R.layout.stationrow , parent, false); TextView tview = (TextView) root.findViewById(R.id.stationName); tview.setText(station.getName()); tview = (TextView) root.findViewById(R.id.stationDistance); if (station.getCalcdist() != 0) { tview.setText( context.getString(stationlistadapter_distance) + " " + number.format( (double)station.getCalcdist()/1000.0) + " km."); } else { tview.setVisibility(View.GONE); } root.findViewById(R.id.isregional).setVisibility( station.isRegional() ? View.VISIBLE : View.INVISIBLE ); root.findViewById(R.id.isstrain).setVisibility( station.isStrain() ? View.VISIBLE : View.INVISIBLE ); root.findViewById(R.id.ismetro).setVisibility( station.isMetro() ? View.VISIBLE : View.INVISIBLE ); return root; } }