If your custom ItemRenderer instances have access to the List instance somehow, it's straigh forward - just register your event handling method:
theList.addEventListener(YourCustomEvent.CUSTOM_EVENT, itemRendererCustomHander);
If you don't have direct access (which I assume), you can still do it indirectly, e.g. through a delegate of the ItemRenderer's class object. Make an instance of a subclass of EventDispatcher a static property of the ItemRenderer class, and in your ItemRenderer constructor, register an event handler with it:
public class ItemRenderer {
public static var eventDelegate:YourCustomEventDispatcher;
public function ItemRenderer() {
eventDelegate.addEventListener(YourCustomEvent.CUSTOM_EVENT, itemRendererCustomHander);
(...)
}
public function itemRendererCustomHander(event:YourCustomEvent) {
(...)
}
}
Now, when you create theList (either in ActionScript or in the initialize event handler of your MXML component), make a new YourCustomEventDispatcher, give to it a reference to theList, and add it to ItemRenderer. YourCustomEventDispatcher registers a private event handler for YourCustomEvent with theList, and just redispatches it. Since all ItemRenderer instances have in turn registered for YourCustomEvent with YourCustomEventDispatcher, theLists's YourCustomEvent reaches all ItemRenderers via one hop.
This is basically an implementation of the Observer design pattern.