package dk.thoerup.traininfo; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; public class DepartureListAdapter extends BaseAdapter { private List departures; LayoutInflater inflater; Context context; static Map imageMap = new HashMap(); static { buildImageMap(); } public DepartureListAdapter(Context context) { super(); this.context = context; inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public void setDepartures(List departures) { this.departures = departures; notifyDataSetChanged(); } @Override public int getCount() { if (departures != null) return departures.size(); else return 0; } public DepartureEntry getDeparture(int position) { return departures.get(position); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { DepartureEntry station = departures.get(position); View root = inflater.inflate(R.layout.departurerow , parent, false); ((TextView) root.findViewById(R.id.Time)).setText(station.getTime()); ((TextView) root.findViewById(R.id.Destination)).setText(station.getDestination()); if (station.getStatus().length() > 0 || station.getNote().length() > 0) { ImageView image = (ImageView) root.findViewById(R.id.InfoIcon); String status = station.getStatus().toLowerCase(); String note = station.getNote().toLowerCase(); int iconID; if (status.indexOf("aflyst") > -1 || note.indexOf("aflyst") > -1 ) { iconID = R.drawable.warn20; } else if (note.indexOf("kører kun til") > -1 || note.indexOf("afgår fra") > -1) { //If these strings are present, the train only covers part of the line iconID = R.drawable.warnyellow20; } else { iconID = R.drawable.info20; } image.setImageResource( iconID ); } ImageView typeIcon = (ImageView) root.findViewById(R.id.TypeIcon); String trainNumber = station.getTrainNumber().trim(); String code = trainNumber.split(" ")[0].toLowerCase(); Integer imageId = imageMap.get(code); if (imageId != null) { typeIcon.setImageResource(imageId); } else { typeIcon.setImageResource(R.drawable.unknown); } return root; } private static void buildImageMap() { imageMap.put("ra", R.drawable.re); //RA = regionaltog arriva imageMap.put("re", R.drawable.re); //RE = Regionaltog imageMap.put("l", R.drawable.lyn); //L = Lyn imageMap.put("ic", R.drawable.ic); //IC = Intercity imageMap.put("pp", R.drawable.pp); //PP = Privatbaner (eg. odderbanen eller LokalBanen) imageMap.put("ør", R.drawable.or); //ØR = Øresundstog imageMap.put("ec", R.drawable.ec); //EC = EuroCity imageMap.put("sj", R.drawable.sj); // SJ=Svenska Jernbaner imageMap.put("ie", R.drawable.ie); imageMap.put("a", R.drawable.stog_a); //S-Tog: A banen #00b5f1 imageMap.put("b", R.drawable.stog_b); //S-Tog:B banen #5aba52 imageMap.put("bx", R.drawable.stog_bx); //S-Tog:Bx banen #a4d17d imageMap.put("c", R.drawable.stog_c); //S-Tog:C banen #f89734 imageMap.put("e", R.drawable.stog_e); //S-Tog:E banen #837eba imageMap.put("f", R.drawable.stog_f); //S-Tog:F banen #ffc32d imageMap.put("h", R.drawable.stog_h); //S-Tog:H banen #f05737 } }