/**
* ArrayList Adapter泛型类
* Created by lezg on 2014/8/14.
*/
public abstract class ArrayListAdapter<T> extends BaseAdapter {
protected ArrayList<T> listItems;
protected Context mContext;
public ArrayListAdapter(Context context,ArrayList<T> datas) {
this.mContext = context;
this.listItems = datas;
}
@Override
public int getCount() {
if (listItems != null) {
return listItems.size();
} else {
return 0;
}
}
@Override
public Object getItem(int position) {
return listItems == null ? null : listItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public abstract View getView(int position, View convertView, ViewGroup viewGroup);
public void setData(ArrayList<T> datas) {
this.listItems = datas;
notifyDataSetChanged();
}
}
/**
* 附近Poi Adapter类
* Created by lezg on 2014/8/14.
*/
public class ListViewPoiAdapter extends ArrayListAdapter<MKPoiInfo> {
private AppContext appContext;
static class ListItemView {
public TextView name;
public TextView address;
public TextView distance;
}
public ListViewPoiAdapter(Context context, ArrayList<MKPoiInfo> datas) {
super(context, datas);
this.appContext = AppContext.getInstance();
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
ListItemView listItemView;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.pois_info, null);
listItemView = new ListItemView();
listItemView.name = (TextView) convertView.findViewById(R.id.name);
listItemView.address = (TextView) convertView.findViewById(R.id.addr);
listItemView.distance = (TextView) convertView.findViewById(R.id.distance);
convertView.setTag(listItemView);//设置控件集到convertView
} else {
listItemView = (ListItemView) convertView.getTag();
}
MKPoiInfo info = listItems.get(position);
listItemView.name.setText(StringUtils.numberToString(position) + info.name);
listItemView.address.setText("地址:" + info.address);
GeoPoint geoPoint = new GeoPoint(info.pt.getLatitudeE6(),
info.pt.getLongitudeE6());
double poiDistance = DistanceUtil.getDistance(appContext.locGeoPoint,
geoPoint);
String dist = StringUtils.formatDistance(poiDistance);
listItemView.distance.setText(dist);
return convertView;
}
}