public static <T> ViewGroup createHorizontallyDistributedText(final Context ctx, final LinearLayout root, final List<T> items, final Func2<Integer, T, String> itemTextMapper) {
        return createHorizontallyDistributedViews(ctx, root, items, (idx, item) -> {
            final String itemText = item == null ? null : itemTextMapper.call(idx, item);
            if (itemText != null) {
                final TextView tv = new TextView(ctx);
                tv.setText(itemText);
                tv.setMaxLines(1);
                tv.setTextColor(ctx.getResources().getColor(R.color.colorText));
                if (DEBUG_LAYOUT) {
                    tv.setBackgroundResource(R.drawable.mark_orange);
                }
                return tv;
            }
            return null;
        });
    }
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