@Override
  public void bindView(final View view, final Context context, final Cursor cursor) {
    final ViewHolder holder = (ViewHolder) view.getTag();
    final Favori item = mFavoriManager.getSingleFromCursor(cursor);

    if (item.getBackground() == null) {
      final GradientDrawable background =
          ColorUtils.getRoundedGradiant(item.getCouleurBackground());
      item.setBackground(background);
    }

    holder.ligneCode.setText(item.getLettre());
    holder.ligneCode.setBackgroundDrawable(item.getBackground());
    holder.ligneCode.setTextColor(item.getCouleurTexte());

    if (item.getNomFavori() == null) {
      holder.itemTitle.setText(item.getNomArret());
      holder.itemDescription.setText(FormatUtils.formatSens(item.getNomSens()));
    } else {
      holder.itemTitle.setText(item.getNomFavori());
      holder.itemDescription.setText(
          FormatUtils.formatArretSens(item.getNomArret(), item.getNomSens()));
    }

    if (item.getDelay() == null) {
      holder.nextHoraire.setVisibility(View.GONE);
      holder.progressBar.setVisibility(View.VISIBLE);
    } else {
      holder.progressBar.setVisibility(View.GONE);
      holder.nextHoraire.setText(item.getDelay());
      holder.nextHoraire.setVisibility(View.VISIBLE);
    }
  }
  @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;
  }