Above post helped me a lot but to clarify a bit further:
You need an “item template” widget that implements UserObjectListEntry interface, then select it in “Entry Widget Class” field in your Tile View widget.
To implement that interface you need an object instance that holds the data used to populate your template widget.
In my case it’s redundant, had to create UObject that duplicates data (item name, item class) instead of spawning full actor just to populate the menu.
To populate the list, create instances of your data object and pass them to TileList->AddItem (instead of creating widget instances)