package tof.cv.mpp.adapter; import android.content.Context; import android.content.res.ColorStateList; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.ArrayList; import tof.cv.mpp.R; import tof.cv.mpp.Utils.Utils; import tof.cv.mpp.bo.Connection; import tof.cv.mpp.bo.Station; import tof.cv.mpp.bo.Via; public class ViaAdapter extends BaseAdapter { private static final int TYPE_TRAIN = 0; private static final int TYPE_STATION = 1; private static final int TYPE_MAX_COUNT = 2; ArrayList<Via> items; Station arrival; Via via; ColorStateList c; private LayoutInflater mInflater; public ViaAdapter(Context context, int textViewResourceId, Connection _response, ColorStateList c) { mInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.c = c; this.items = _response.getVias().via; arrival = _response.getArrival(); } @Override public int getItemViewType(int position) { return (position % 2 == 1) ? TYPE_TRAIN : TYPE_STATION; } @Override public int getViewTypeCount() { return TYPE_MAX_COUNT; } @Override public int getCount() { Log.i("", "SIZE" + (items.size() * 2)); return items.size() * 2; } @Override public Via getItem(int position) { return items.get(position / 2); } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; int viaPosition=position / 2; Log.i("", "***" + viaPosition + "/" + via.getVehicle()); if (convertView == null) { holder = new ViewHolder(); switch (getItemViewType(position)) { case TYPE_TRAIN: convertView = mInflater.inflate(R.layout.row_via_train, null); holder.tvTrain = (TextView) convertView .findViewById(R.id.tv_train); holder.tvDuration = (TextView) convertView .findViewById(R.id.tv_duration); break; case TYPE_STATION: convertView = mInflater.inflate(R.layout.row_via_station, null); holder.tvArrivalPlatform = (TextView) convertView .findViewById(R.id.tv_arrival_platform); holder.tvDeparturePlatform = (TextView) convertView .findViewById(R.id.tv_departure_platform); holder.tvArrivalTime = (TextView) convertView .findViewById(R.id.tv_arrival_time); holder.tvDepartureTime = (TextView) convertView .findViewById(R.id.tv_departure_time); holder.tvStation = (TextView) convertView .findViewById(R.id.tv_station); holder.tvDuration = (TextView) convertView .findViewById(R.id.tv_duration); break; } convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (via != null) { switch (getItemViewType(position)) { case TYPE_TRAIN: holder.tvTrain.setText(Utils.getTrainId(via.getVehicle())); if (viaPosition+ 1 < items.size()) holder.tvDuration.setText(Utils.formatDate( (Long.valueOf(items.get(viaPosition+1).getArrival() .getTime()) - Long.valueOf(via.getDeparture() .getTime())), true, false)); else holder.tvDuration.setText(Utils.formatDate((Long .valueOf(arrival.getTime()) - Long.valueOf(via.getDeparture().getTime())), true, false)); break; case TYPE_STATION: holder.tvArrivalPlatform .setText(via.getArrival().getPlatform()); holder.tvDeparturePlatform.setText(via.getDeparture() .getPlatform()); holder.tvArrivalTime.setText(Utils.formatDate(via.getArrival() .getTime(), false, false)); holder.tvDepartureTime.setText(Utils.formatDate(via .getDeparture().getTime(), false, false)); // TODO /* * if (via.getArrival().getDelay().contentEquals("0")) * tvDelay.setVisibility(View.GONE); else tvDelay.setText("+" + * via.getDelay() + "'"); */ holder.tvStation.setText(via.getName()); holder.tvDuration.setText("(" + Utils.formatDate(via.getTimeBetween(), true, false) + ")"); holder.tvArrivalPlatform.setTextColor(c); holder.tvDeparturePlatform.setTextColor(c); break; } holder.tvDuration.setTextColor(c); } return convertView; } public static class ViewHolder { public TextView tvArrivalPlatform; public TextView tvDeparturePlatform; public TextView tvArrivalTime; public TextView tvDepartureTime; public TextView tvTrain; public TextView tvStation; public TextView tvDuration; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } }