private void selectTextViewItem() {

        if (this.textViewClickThroughMode) {
            final int pos = getPositionFor(this.selectedItem, 0);
            final int newPos = (pos + 1) % this.values.size();
            set(values.get(newPos));
        } else {

            final SimpleDialog sd = SimpleDialog.ofContext(spinnerView.getContext());
            if (this.textDialogTitle != null) {
                sd.setTitle(TextParam.text(this.textDialogTitle));
            }

            //use a COPY of values for display, in case value list changes while dialog is open. See #13578
            final List<T> valuesCopy = new ArrayList<>(values);

            final SimpleDialog.ItemSelectModel<T> model = new SimpleDialog.ItemSelectModel<>();
            model
                .setItems(valuesCopy)
                .setDisplayMapper((v) -> itemToString(v, false))
                .setSelectedItems(Collections.singleton(selectedItem))
                .setChoiceMode(this.textHideSelectionMarker ? SimpleItemListModel.ChoiceMode.SINGLE_PLAIN : SimpleItemListModel.ChoiceMode.SINGLE_RADIO);

            if (this.textGroupMapper != null) {
                model.activateGrouping((v) -> this.textGroupMapper.call(v))
                        .setGroupDisplayMapper(gi -> TextParam.text("**" + gi.getGroup() + "**").setMarkdown(true));
            }
            sd.selectSingle(model, this::set);
        }
    }
displays data for selection in alert dialog. Used for textview-representation
main/src/main/java/cgeo/geocaching/ui/TextSpinner.java