public void navigateWithTargetSelector(@NonNull final Context context, @NonNull final Geocache cache) {
        final ArrayList<INamedGeoCoordinate> targets = new ArrayList<>();
        targets.add(cache);
        for (final Waypoint waypoint : cache.getWaypoints()) {
            final Geopoint coords = waypoint.getCoords();
            if (coords != null && (waypoint.getWaypointType() == WaypointType.PARKING || waypoint.getWaypointType() == WaypointType.FINAL) && !cache.getCoords().equals(coords) && coords.isValid()) {
                targets.add(waypoint);
            }
        }
        if (targets.size() < 2) {
            navigateWithoutTargetSelector(context, cache);
        } else {
            // show a selection of all parking places and the cache itself, when using the navigation for driving
            final Context themeContext = Dialogs.newContextThemeWrapper(context);
            final ListAdapter adapter = new ArrayAdapter<INamedGeoCoordinate>(themeContext, R.layout.cacheslist_item_select, targets) {
                @NonNull
                @Override
                public View getView(final int position, final View convertView, @NonNull final ViewGroup parent) {
                    return GeoItemSelectorUtils.createIWaypointItemView(context, getItem(position),
                            GeoItemSelectorUtils.getOrCreateView(context, convertView, parent));
                }
            };

            Dialogs.newBuilder(context)
                    .setTitle(R.string.cache_menu_navigation_drive_select_target)
                    .setAdapter(adapter, (dialog, which) -> {
                        final INamedGeoCoordinate target = targets.get(which);
                        if (target instanceof Geocache) {
                            navigateWithoutTargetSelector(context, (Geocache) target);
                        }
                        if (target instanceof Waypoint) {
                            navigate(context, (Waypoint) target);
                        }
                    }).show();
        }
    }
navigation app for simple point navigation (no differentiation between cache/waypoint/point)
main/src/main/java/cgeo/geocaching/apps/navi/AbstractPointNavigationApp.java