Ok, let me tell you how I’d do it.
I assume you want to store a pointer to an actor/interface/uobject/whatever in your list. So what I would do is create a class/structure that holds this pointer and use this class/structure as a list item.
class FMyItem
{
public:
static TSharedPtr< FMyItem> New(IFlareShipInterface* InObject)
{
return MakeShareable(new FMyItem(InObject));
}
private:
FMyItem(IFlareShipInterface* InPtr) : InterfacePtr(InPtr){}
IFlareShipInterface* InterfacePtr;
}
// just for shorter name
typedef TSharedPtr< FMyItem> FItemPtr;
// here goes your list source
TArray< FItemPtr> ListSource;
// list declaration
TSharedPtr< SListView<FItemPtr> > ListView;
// OnGenerateRow that you will plug during SListView creation
TSharedRef< ITableRow> OnGenerateRow(FItemPtr Item, const TSharedRef< STableViewBase>& OwnerTable)
{
return SNew( STableRow< FItemPtr >, OwnerTable )
[
...
];
}
// and this is how you make new item and add it to the list
ListSource.Add(FMyItem::New(GetSomethingThatImplementsDesiredInterface()));
Hope this helps you somehow or will get you on the right track