@Override
    public void onClick(View v) {
      int position = Integer.parseInt(String.valueOf(v.getTag()));
      mItem = busStepList.get(position);
      if (mItem.isBus()) {
        if (mHolder.arrowExpand == false) {
          mHolder.arrowExpand = true;
          mHolder.busExpandImage.setImageResource(R.drawable.up);
          addBusStation(mItem.getBusLine().getDepartureBusStation());
          for (BusStationItem station : mItem.getBusLine().getPassStations()) {
            addBusStation(station);
          }
          addBusStation(mItem.getBusLine().getArrivalBusStation());

        } else {
          mHolder.arrowExpand = false;
          mHolder.busExpandImage.setImageResource(R.drawable.down);
          mHolder.expandContent.removeAllViews();
        }
      } else if (mItem.isRailway()) {
        if (mHolder.arrowExpand == false) {
          mHolder.arrowExpand = true;
          mHolder.busExpandImage.setImageResource(R.drawable.up);
          addRailwayStation(mItem.getRailway().getDeparturestop());
          for (RailwayStationItem station : mItem.getRailway().getViastops()) {
            addRailwayStation(station);
          }
          addRailwayStation(mItem.getRailway().getArrivalstop());

        } else {
          mHolder.arrowExpand = false;
          mHolder.busExpandImage.setImageResource(R.drawable.down);
          mHolder.expandContent.removeAllViews();
        }
      }
    }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder vh;
    if (convertView == null) {
      vh = new ViewHolder();
      convertView = View.inflate(context, R.layout.route_segment, null);
      vh.parent = (RelativeLayout) convertView.findViewById(R.id.bus_item);
      vh.busLineName = (TextView) convertView.findViewById(R.id.bus_line_name);
      vh.busDirIcon = (ImageView) convertView.findViewById(R.id.bus_dir_icon);
      vh.busStationNum = (TextView) convertView.findViewById(R.id.bus_station_num);
      vh.busExpandImage = (ImageView) convertView.findViewById(R.id.bus_expand_image);
      vh.busDirUp = (ImageView) convertView.findViewById(R.id.bus_dir_icon_up);
      vh.busDirDown = (ImageView) convertView.findViewById(R.id.bus_dir_icon_down);
      vh.splitLine = (ImageView) convertView.findViewById(R.id.bus_seg_split_line);
      vh.expandContent = (LinearLayout) convertView.findViewById(R.id.expand_content);
      convertView.setTag(vh);
    } else {
      vh = (ViewHolder) convertView.getTag();
    }

    SchemeBusStep item = busStepList.get(position);
    if (position == 0) {
      vh.busDirIcon.setImageResource(R.drawable.dir_start);
      vh.busLineName.setText("出发");
      vh.busDirUp.setVisibility(View.INVISIBLE);
      vh.busDirDown.setVisibility(View.VISIBLE);
      vh.splitLine.setVisibility(View.GONE);
      vh.busStationNum.setVisibility(View.GONE);
      vh.busExpandImage.setVisibility(View.GONE);
      return convertView;
    } else if (position == busStepList.size() - 1) {
      vh.busDirIcon.setImageResource(R.drawable.dir_end);
      vh.busLineName.setText("到达终点");
      vh.busDirUp.setVisibility(View.VISIBLE);
      vh.busDirDown.setVisibility(View.INVISIBLE);
      vh.busStationNum.setVisibility(View.INVISIBLE);
      vh.busExpandImage.setVisibility(View.INVISIBLE);
      return convertView;
    } else {
      if (item.isWalk() && item.getWalk() != null && item.getWalk().getDistance() > 0) {
        vh.busDirIcon.setImageResource(R.drawable.dir13);
        vh.busDirUp.setVisibility(View.VISIBLE);
        vh.busDirDown.setVisibility(View.VISIBLE);
        vh.busLineName.setText("步行" + (int) item.getWalk().getDistance() + "米");
        vh.busStationNum.setVisibility(View.GONE);
        vh.busExpandImage.setVisibility(View.GONE);
        return convertView;
      } else if (item.isBus() && item.getBusLines().size() > 0) {
        vh.busDirIcon.setImageResource(R.drawable.dir14);
        vh.busDirUp.setVisibility(View.VISIBLE);
        vh.busDirDown.setVisibility(View.VISIBLE);
        vh.busLineName.setText(item.getBusLines().get(0).getBusLineName());
        vh.busStationNum.setVisibility(View.VISIBLE);
        vh.busStationNum.setText((item.getBusLines().get(0).getPassStationNum() + 1) + "站");
        vh.busExpandImage.setVisibility(View.VISIBLE);
        ArrowClick arrowClick = new ArrowClick(vh, item);
        vh.parent.setTag(position);
        vh.parent.setOnClickListener(arrowClick);
        return convertView;
      } else if (item.isRailway() && item.getRailway() != null) {
        vh.busDirIcon.setImageResource(R.drawable.dir16);
        vh.busDirUp.setVisibility(View.VISIBLE);
        vh.busDirDown.setVisibility(View.VISIBLE);
        vh.busLineName.setText(item.getRailway().getName());
        vh.busStationNum.setVisibility(View.VISIBLE);
        vh.busStationNum.setText((item.getRailway().getViastops().size() + 1) + "站");
        vh.busExpandImage.setVisibility(View.VISIBLE);
        ArrowClick arrowClick = new ArrowClick(vh, item);
        vh.parent.setTag(position);
        vh.parent.setOnClickListener(arrowClick);
        return convertView;
      } else if (item.isTaxi() && item.getTaxi() != null) {
        vh.busDirIcon.setImageResource(R.drawable.dir14);
        vh.busDirUp.setVisibility(View.VISIBLE);
        vh.busDirDown.setVisibility(View.VISIBLE);
        vh.busLineName.setText("打车到终点");
        vh.busStationNum.setVisibility(View.GONE);
        vh.busExpandImage.setVisibility(View.GONE);
        return convertView;
      }
    }

    return convertView;
  }
  public BusSegmentListAdapter(Context c, List<BusStep> l) {
    context = c;
    SchemeBusStep start = new SchemeBusStep(null);
    start.setStart(true);
    busStepList.add(start);
    for (BusStep busStep : l) {
      if (busStep.getWalk() != null && busStep.getWalk().getDistance() > 0) {
        SchemeBusStep walk = new SchemeBusStep(busStep);
        walk.setWalk(true);
        busStepList.add(walk);
      }

      if (busStep.getBusLine() != null) {
        SchemeBusStep bus = new SchemeBusStep(busStep);
        bus.setBus(true);
        busStepList.add(bus);
      }

      if (busStep.getRailway() != null) {
        SchemeBusStep rail = new SchemeBusStep(busStep);
        rail.setRailway(true);
        busStepList.add(rail);
      }

      if (busStep.getTaxi() != null) {
        SchemeBusStep taxi = new SchemeBusStep(busStep);
        taxi.setTaxi(true);
        busStepList.add(taxi);
      }
    }

    SchemeBusStep end = new SchemeBusStep(null);
    end.setEnd(true);
    busStepList.add(end);
  }