Другой вариант - создать отдельные itemRenderers и использовать функцию itemRendererFunction.
Я взял этот пример из аналогичного вопроса, который задавался ранее, и немного его изменил в соответствии с вашими потребностями:
flex 4 list ItemRenderer: как я могу иметь разные itemRandrerers для разных строк?
<fx:Script>
<![CDATA[
import renderers.*;
import mx.core.ClassFactory;
import spark.skins.default.DefaultItemRenderer;
private function list_itemRendererFunc(item:Object):ClassFactory {
var cla:Class = MainItemRenderer;
switch (currentState) {
case "main":
cla = MainItemRenderer;
break;
default:
cla = CashCreditItemRenderer;
break;
}
return new ClassFactory(cla);
}
]]>
</fx:Script>
<s:List id="theList"
x="69" y="82"
itemRendererFunction="list_itemRendererFunc"
dataProvider="{model.products}"
useVirtualLayout="false">
EDIT: Вот другое решение, которое было использовано.Вы можете назначить разные itemRenderers, объявив разные значения свойств для каждого состояния.
<s:List id="theList"
width="393" height="223"
x="42" y="69"
dataProvider="{model.products}"
useVirtualLayout="false"
itemRenderer.main="com.png.vm.ui.components.ProductCartThumbnail"
itemRenderer="com.png.vm.ui.components.ProductCartThumbnailReadOnly">