public void setEditableCategory(final String category, final EditableCategoryHandler handler) {
        if (this.activity == null) {
            //not supported if not in context of an activity
            return;
        }

        removeCategory(category);
        this.editableCategoryHandlerMap.put(category, handler);
        createCategory(category, true);

        //fill initially
        addImagesInternal(handler.getAllImages(), i -> category, true);

        if (imageHelper == null) {
            imageHelper = new ImageActivityHelper(activity, (r, imgUris, uk) -> {
                final Collection<Image> imgs = CollectionStream.of(imgUris).map(uri -> new Image.Builder().setUrl(uri).build()).toList();
                final Collection<Image> addedImgs = editableCategoryHandlerMap.get(uk).add(imgs);
                if (r == ImageActivityHelper.REQUEST_CODE_CAMERA) {
                    //change title of camera photos
                    final Collection<Image> copy = new ArrayList<>(addedImgs);
                    addedImgs.clear();
                    int idx = categorizedImageListHelper.getCategoryCount(uk) + 1;
                    for (Image i : copy) {
                        final Image newImage = editableCategoryHandlerMap.get(uk).setTitle(i, LocalizationUtils.getString(R.string.cache_image_title_camera_prefix) + " " + idx);
                        if (newImage == null) {
                            addedImgs.add(i);
                        } else {
                            addedImgs.add(newImage);
                            idx++;
                        }
                    }
                }

                addImagesInternal(addedImgs, i -> uk, true);
            });
        }
    }
adds an editable category to this gallery. This is a category where user has options to add/rename/remove images
main/src/main/java/cgeo/geocaching/ui/ImageGalleryView.java