Нельзя установить свойство itemRenderer списка, которое должно реализовывать IClassFactory. Итак, ваше задание будет выглядеть так:
public function GenericList(cf:ClassFactory, ac:ArrayCollection, layout:LayoutBase) {
И экземпляр будет:
var myList:GenericList = new GenericList( new ClassFactory( com.company.renderers.MyItemRenderer, ....);
Относительно макета:
По сути, List включает в себя DataGroup, поэтому вам нужен доступ к макету группы данных. Однако dataGroup еще не обязательно будет создан. Поэтому вам, возможно, придется создать частное свойство, которое вы затем используете в commitProperties.
private var _myLayout:LayoutBase; (populate in constructor via getter/setter)
protected var layoutInvalidated:Boolean;
public function set myLayout( layout:LayoutBase):void {
_myLayout = layout;
layoutInvalidated = true;
}
override protected function commitProperties():void {
super.commitProperties();
if( layoutInvalidated && dataGroup && dataGroup.layout ) {
layoutInvalidated = false;
dataGroup.layout = _myLayout;
}
}