Flex Mobile Spark List *条件* ItemRenderer
Flex Mobile Spark List *conditional* ItemRenderer
我想创建一个自定义火花列表,它会根据数据提供程序行中的值(称为类型)为该行设置条件项呈现器。
<s:List>
<s:dataProvider>
<s:ArrayCollection>
<s:source>
<fx:Object type="type1" label="type 1 item" />
<fx:Object type="type2" label="type 2 item" />
<fx:Object type="type3" label="type 3 item" />
<fx:Object type="type2" label="type 2 item" />
<fx:Object type="type4" label="type 4 item" />
</s:source>
</s:ArrayCollection>
</s:dataProvider>
</s:List>
所以本质上,每种类型的行的项目渲染器都是不同的。
我为什么要这样做?因为在项目渲染器中为不同的布局使用状态不可靠,所以当您快速滚动时它会被击中和失误。
我确实找到了 mx 列表的代码:
public class MultipleRenderersList extends List
{
override public function createItemRenderer(data:Object):IListItemRenderer
{
if (data.type == 'type1')
{
return new Type1Component;
}
else if (data.label == 'type2')
{
return new Type2Component;
}
return null;
}
但是火花列表不会公开 'createItemRenderer' 甚至任何类似的内容。但是它确实有
override public function set itemRenderer(value:IFactory):void
但我无法访问 dataProvider 来解决问题的条件部分。
有人能帮忙吗?
好的,我想找到了:/
http://sourceforge.net/adobe/flexsdk/wiki/Spark%20List/
片段
private function introspectRole(item:Object):IFactory {
if (item.role == "employee") {
return new ClassFactory(EmployeeRenderer);
} else if (item.role == "manager") {
return new ClassFactory(ManagerRenderer);
} else {
return new ClassFactory(DefaultItemRenderer);
}
}
并将 itemRendererFunction 设置为此,看似简单,但确实有效,所以是的。
谢谢
我想创建一个自定义火花列表,它会根据数据提供程序行中的值(称为类型)为该行设置条件项呈现器。
<s:List>
<s:dataProvider>
<s:ArrayCollection>
<s:source>
<fx:Object type="type1" label="type 1 item" />
<fx:Object type="type2" label="type 2 item" />
<fx:Object type="type3" label="type 3 item" />
<fx:Object type="type2" label="type 2 item" />
<fx:Object type="type4" label="type 4 item" />
</s:source>
</s:ArrayCollection>
</s:dataProvider>
</s:List>
所以本质上,每种类型的行的项目渲染器都是不同的。
我为什么要这样做?因为在项目渲染器中为不同的布局使用状态不可靠,所以当您快速滚动时它会被击中和失误。
我确实找到了 mx 列表的代码:
public class MultipleRenderersList extends List
{
override public function createItemRenderer(data:Object):IListItemRenderer
{
if (data.type == 'type1')
{
return new Type1Component;
}
else if (data.label == 'type2')
{
return new Type2Component;
}
return null;
}
但是火花列表不会公开 'createItemRenderer' 甚至任何类似的内容。但是它确实有
override public function set itemRenderer(value:IFactory):void
但我无法访问 dataProvider 来解决问题的条件部分。
有人能帮忙吗?
好的,我想找到了:/
http://sourceforge.net/adobe/flexsdk/wiki/Spark%20List/
片段
private function introspectRole(item:Object):IFactory {
if (item.role == "employee") {
return new ClassFactory(EmployeeRenderer);
} else if (item.role == "manager") {
return new ClassFactory(ManagerRenderer);
} else {
return new ClassFactory(DefaultItemRenderer);
}
}
并将 itemRendererFunction 设置为此,看似简单,但确实有效,所以是的。
谢谢