@Override public void onListItemClick(ListView parent, View v, int position, long id) { final RouteInfoLocation item = ((TransportStopAdapter) getListAdapter()).getItem(position); Builder builder = new AlertDialog.Builder(this); List<String> items = new ArrayList<String>(); final List<TransportStop> stops = item.getDirection() ? item.getRoute().getForwardStops() : item.getRoute().getBackwardStops(); LatLon locationToGo = getLocationToGo(); LatLon locationToStart = getLocationToStart(); builder.setTitle( getString(R.string.transport_stop_to_go_out) + "\n" + getInformation(item, stops, getCurrentRouteLocation(), true)); // $NON-NLS-1$ int ind = 0; for (TransportStop st : stops) { StringBuilder n = new StringBuilder(50); n.append(ind++); if (st == item.getStop()) { n.append("!! "); // $NON-NLS-1$ } else { n.append(". "); // $NON-NLS-1$ } String name = st.getName(settings.usingEnglishNames()); if (locationToGo != null) { n.append(name).append(" - ["); // $NON-NLS-1$ n.append( OsmAndFormatter.getFormattedDistance( (int) MapUtils.getDistance(locationToGo, st.getLocation()), (ClientContext) getApplication())) .append("]"); // $NON-NLS-1$ } else if (locationToStart != null) { n.append("[") .append( OsmAndFormatter.getFormattedDistance( (int) MapUtils.getDistance(locationToStart, st.getLocation()), (ClientContext) getApplication())) .append("] - "); // $NON-NLS-1$ //$NON-NLS-2$ n.append(name); } else { n.append(name); } items.add(n.toString()); } builder.setItems( items.toArray(new String[items.size()]), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int i = which; if (i >= 0) { TransportStop stop = stops.get(i); showContextMenuOnStop(stop, item, i); } } }); builder.show(); }
public void showContextMenuOnRoute(final RouteInfoLocation route, final int routeInd) { Builder b = new AlertDialog.Builder(this); List<TransportStop> stops = route.getDirection() ? route.getRoute().getForwardStops() : route.getRoute().getBackwardStops(); boolean en = settings.usingEnglishNames(); String info = getInformation(route, stops, routeInd, false); StringBuilder txt = new StringBuilder(300); txt.append(info); boolean start = false; for (TransportStop s : stops) { if (s == route.getStart()) { start = true; } if (start) { txt.append("\n") .append(getString(R.string.transport_Stop)) .append(" : ") .append(s.getName(en)); // $NON-NLS-1$ //$NON-NLS-2$ } if (s == route.getStop()) { break; } } b.setMessage(txt.toString()); b.setPositiveButton(getString(R.string.default_buttons_ok), null); b.setNeutralButton( getString(R.string.transport_search_before), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int toInsert = routeInd; int c = getCurrentRouteLocation(); if (c >= 0 && c < routeInd) { toInsert--; } intermediateListAdapater.remove(null); intermediateListAdapater.insert(null, toInsert); zoom = initialZoom; searchTransport(); } }); b.setNegativeButton( getString(R.string.transport_search_after), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int toInsert = routeInd; int c = getCurrentRouteLocation(); if (c > routeInd || c == -1) { toInsert++; } intermediateListAdapater.remove(null); intermediateListAdapater.insert(null, toInsert); zoom = initialZoom; searchTransport(); } }); b.show(); }