public static ImmutablePair<View, CheckBox> createCheckboxItem(final Activity activity, @Nullable final ViewGroup context, final TextParam text, final ImageParam icon, final TextParam infoText) {

        final View itemView = LayoutInflater.from(context == null ? activity : context.getContext()).inflate(R.layout.checkbox_item, context, false);
        final CheckboxItemBinding itemBinding = CheckboxItemBinding.bind(itemView);
        text.applyTo(itemBinding.itemText);
        if (icon != null) {
            icon.applyTo(itemBinding.itemIcon);
        }
        if (infoText != null) {
            itemBinding.itemInfo.setVisibility(View.VISIBLE);
            itemBinding.itemInfo.setOnClickListener(v -> SimpleDialog.of(activity).setMessage(infoText).show());
        }
        itemView.setOnClickListener(v -> itemBinding.itemCheckbox.toggle());
        itemBinding.itemCheckbox.setContentDescription(itemBinding.itemText.getText());

        return new ImmutablePair<>(itemView, itemBinding.itemCheckbox);
    }
creates a column layout and returns it. Provides the option to specify individual layouts per column.

@param ctx               context to use for creating views
@param root              optional. If given, then the column layout will be created IN the given view instead of returning a new one.
@param columnCount       number of columns the layout shall have
@param withSeparator     if true, a vertical separator line will be drawn between columns
@param columnViewCreator will be called for each column index (0 - "columnCount-1") and shall return the columns content view.
                         May return null for some columns, in which case those are empty
@return new ViewGroup holding the column layout. If "root" was not null, then "root" is returned.
main/src/main/java/cgeo/geocaching/ui/ViewUtils.java