Exactly, that was in fact one of the examples I was using to construct my custom itemrenderer. However, it violates encapsulation, as it reads properties from the passed in object, which means that the developer needs to know the structure of the passed in objects.
I would like to build a generic custom itemrenderer that doesn't need to know that.
I would subclass List, add an iconField property and change the default
renderer to a custom renderer that will check the data[iconField] for an
icon and display it.
That did the trick. I just wanted to make sure I wasn't missing something obvious before making a custom List component. I implemented the iconField and iconFunction the same way the labelField and labelFunction properties were implemented in the ListBase class. Working beautifully. Thanks!