private void initializeFilterAdd() {
        final List<GeocacheFilterType> filterTypes = new ArrayList<>(
                CollectionStream.of(GeocacheFilterType.values()).filter(GeocacheFilterType::displayToUser).toList());
        filterTypes.removeAll(INTERNAL_FILTER_TYPES_SET);

        Collections.sort(filterTypes, (left, right) -> TextUtils.COLLATOR.compare(left.getUserDisplayableName(), right.getUserDisplayableName()));
        addFilter.setValues(filterTypes)
                .setDisplayMapperPure(GeocacheFilterType::getUserDisplayableName)
                .setTextHideSelectionMarker(true)
                .setView(binding.filterAdditem, (v, t) -> {
                })
                .setTextGroupMapper(GeocacheFilterType::getUserDisplayableGroup)
                .setChangeListener(gcf -> {
                    filterListAdapter.addItem(0, FilterViewHolderCreator.createFor(gcf, this));
                    binding.filterList.smoothScrollToPosition(0);
                    adjustFilterEmptyView();
                }, false);

    }
Show a filter selection using an {@code ExpandableListView}.
main/src/main/java/cgeo/geocaching/filters/gui/GeocacheFilterActivity.java