/*
* Copyright (C) 2016 Baidu, Inc. All Rights Reserved.
*/
package baidumapsdk.demo.search;
import java.util.List;
import com.baidu.mapapi.search.core.RouteLine;
import com.baidu.mapapi.search.route.DrivingRouteLine;
import com.baidu.mapapi.search.route.MassTransitRouteLine;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import baidumapsdk.demo.R;
public class RouteLineAdapter extends BaseAdapter {
private List<? extends RouteLine> routeLines;
private LayoutInflater layoutInflater;
private Type mtype;
public RouteLineAdapter(Context context, List<?extends RouteLine> routeLines, Type type) {
this.routeLines = routeLines;
layoutInflater = LayoutInflater.from( context);
mtype = type;
}
@Override
public int getCount() {
return routeLines.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
NodeViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.activity_transit_item, null);
holder = new NodeViewHolder();
holder.name = (TextView) convertView.findViewById(R.id.transitName);
holder.lightNum = (TextView) convertView.findViewById(R.id.lightNum);
holder.dis = (TextView) convertView.findViewById(R.id.dis);
convertView.setTag(holder);
} else {
holder = (NodeViewHolder) convertView.getTag();
}
switch (mtype) {
case TRANSIT_ROUTE:
case WALKING_ROUTE:
case BIKING_ROUTE:
holder.name.setText("路线" + (position + 1));
int time = routeLines.get(position).getDuration();
if ( time / 3600 == 0 ) {
holder.lightNum.setText( "大约需要:" + time / 60 + "分钟" );
} else {
holder.lightNum.setText( "大约需要:" + time / 3600 + "小时" + (time % 3600) / 60 + "分钟" );
}
holder.dis.setText("距离大约是:" + routeLines.get(position).getDistance() + "米");
break;
case DRIVING_ROUTE:
DrivingRouteLine drivingRouteLine = (DrivingRouteLine) routeLines.get(position);
holder.name.setText( "线路" + (position + 1));
holder.lightNum.setText( "红绿灯数:" + drivingRouteLine.getLightNum());
holder.dis.setText("拥堵距离为:" + drivingRouteLine.getCongestionDistance() + "米");
break;
case MASS_TRANSIT_ROUTE:
MassTransitRouteLine massTransitRouteLine = (MassTransitRouteLine) routeLines.get(position);
holder.name.setText("线路" + (position + 1));
holder.lightNum.setText( "预计达到时间:" + massTransitRouteLine.getArriveTime() );
holder.dis.setText("总票价:" + massTransitRouteLine.getPrice() + "元");
break;
default:
break;
}
return convertView;
}
private class NodeViewHolder {
private TextView name;
private TextView lightNum;
private TextView dis;
}
public enum Type {
MASS_TRANSIT_ROUTE, // 综合交通
TRANSIT_ROUTE, // 公交
DRIVING_ROUTE, // 驾车
WALKING_ROUTE, // 步行
BIKING_ROUTE // 骑行
}
}