package net.naonedbus.widget.adapter.impl; import java.util.List; import net.naonedbus.R; import net.naonedbus.bean.LegWrapper; import net.naonedbus.bean.LegWrapper.Type; import net.naonedbus.bean.Ligne; import net.naonedbus.utils.ColorUtils; import net.naonedbus.utils.FormatUtils; import android.content.Context; import android.text.TextUtils; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import fr.ybo.opentripplanner.client.modele.Place; public class LegWrapperArrayAdapter extends ArrayAdapter<LegWrapper> { private final LayoutInflater mLayoutInflater; private final int mSecondaryColor; public LegWrapperArrayAdapter(final Context context, final List<LegWrapper> objects) { super(context, 0, objects); mLayoutInflater = LayoutInflater.from(context); // Lazily get the URL color from the current theme. final TypedValue colorValue = new TypedValue(); context.getTheme().resolveAttribute(R.attr.secondaryColor, colorValue, true); mSecondaryColor = context.getResources().getColor(colorValue.resourceId); } @Override public boolean areAllItemsEnabled() { return false; } @Override public boolean isEnabled(final int position) { return false; } @Override public View getView(final int position, final View convertView, final ViewGroup parent) { View view = convertView; ViewHolder viewHolder; if (view == null) { view = mLayoutInflater.inflate(R.layout.list_item_leg, parent, false); viewHolder = new ViewHolder(); viewHolder.itemIcon = (ImageView) view.findViewById(R.id.itemIcon); viewHolder.itemSymbole = (TextView) view.findViewById(R.id.itemSymbole); viewHolder.itemTime = (TextView) view.findViewById(R.id.itemTime); viewHolder.itemPlace = (TextView) view.findViewById(R.id.itemPlace); viewHolder.itemMetroPoint = view.findViewById(R.id.itemMetroPoint); view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } final LegWrapper legWrapper = getItem(position); final Ligne ligne = legWrapper.getLigne(); final Place place = legWrapper.getPlace(); if ("WALK".equals(legWrapper.getMode())) { viewHolder.itemSymbole.setVisibility(View.INVISIBLE); if (legWrapper.getType() == Type.IN) { final String direction = FormatUtils.formatWithDot(legWrapper.getDuration(), legWrapper.getDistance()); final CharSequence title = TextUtils.concat(getContext() .getString(R.string.itinerary_go_to, place.name) + "\n", FormatUtils.formatColorAndSize(getContext(), mSecondaryColor, direction)); viewHolder.itemIcon.setVisibility(View.VISIBLE); viewHolder.itemPlace.setText(title); } else { viewHolder.itemIcon.setVisibility(View.GONE); viewHolder.itemPlace.setText(place.name); } } else { if (legWrapper.getType() == Type.IN) { viewHolder.itemPlace.setText(place.name); final String direction = FormatUtils.formatSens(legWrapper.getHeadsign()); final CharSequence title = TextUtils.concat(place.name + "\n", FormatUtils.formatColorAndSize(getContext(), mSecondaryColor, direction)); viewHolder.itemPlace.setText(title); } else { viewHolder.itemPlace.setText(place.name); } if (ligne != null) { viewHolder.itemIcon.setVisibility(View.GONE); viewHolder.itemSymbole.setVisibility(View.VISIBLE); viewHolder.itemSymbole.setText(ligne.getLettre()); viewHolder.itemSymbole.setTextColor(ligne.getCouleurTexte()); viewHolder.itemSymbole.setBackgroundDrawable(ColorUtils.getCircle(ligne.getCouleur())); } else { viewHolder.itemIcon.setVisibility(View.INVISIBLE); viewHolder.itemSymbole.setVisibility(View.INVISIBLE); } } if (legWrapper.isTrip()) { if (legWrapper.getType() == Type.IN) { viewHolder.itemMetroPoint.setBackgroundResource(R.drawable.ic_arret_first_silver); } else { viewHolder.itemMetroPoint.setBackgroundResource(R.drawable.ic_arret_last_silver); } viewHolder.itemMetroPoint.setVisibility(View.VISIBLE); } else { viewHolder.itemMetroPoint.setVisibility(View.GONE); } viewHolder.itemTime.setText(legWrapper.getTime()); return view; } private static class ViewHolder { ImageView itemIcon; TextView itemSymbole; TextView itemTime; TextView itemPlace; View itemMetroPoint; } }