public static ViewGroup createColumnView(final Context ctx, final LinearLayout root, final int columnCount, final boolean withSeparator, final Func1<Integer, View> columnViewCreator) {

        final List<Float> columnWidths = new ArrayList<>();
        for (int c = 0; c < columnCount * 2 - 1; c++) {
            columnWidths.add(c % 2 == 0 ? 1f : 0.1f);
        }

        return ViewUtils.createHorizontallyDistributedViews(ctx, root, columnWidths, (i, f) -> {
            if (i % 2 == 1) {
                //column separator
                return ViewUtils.createVerticalSeparator(ctx, !withSeparator);
            }

            return columnViewCreator.call(i / 2);
        }, (i, f) -> f);
    }
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