Apache flex Flex/AS3多状态项呈现器问题
我创建了一个具有3个状态的模块作为itemrenderer。这些州被称为电影、歌曲和电视节目。基本状态为空。itemRenderer由Hbox、VBox和标签组成 我已经创建了一个列表组件 我想做的是填充列表组件中的数据,并使用ItemRenderer使其可见。根据从数据库中取出的数据,我希望显示itemRenderer的正确状态。因此,如果从数据库中取出的记录是一首歌曲,我想显示歌曲状态,如果是电影,我想显示电影状态等等 因此,根据提取的数据,我想更改itemrenderer的当前状态。我该怎么做? 有人能给我举个例子说明我是如何编写这段代码的吗Apache flex Flex/AS3多状态项呈现器问题,apache-flex,actionscript-3,itemrenderer,Apache Flex,Actionscript 3,Itemrenderer,我创建了一个具有3个状态的模块作为itemrenderer。这些州被称为电影、歌曲和电视节目。基本状态为空。itemRenderer由Hbox、VBox和标签组成 我已经创建了一个列表组件 我想做的是填充列表组件中的数据,并使用ItemRenderer使其可见。根据从数据库中取出的数据,我希望显示itemRenderer的正确状态。因此,如果从数据库中取出的记录是一首歌曲,我想显示歌曲状态,如果是电影,我想显示电影状态等等 因此,根据提取的数据,我想更改itemrenderer的当前状态。我该怎
谢谢重写CustomItemRenderer的
设置数据
方法,并根据数据分配适当的状态
override public function set data(value:Object):void
{
super.data = value;
if(data.type == "song")
this.currentState = SONG_STATE;
else if(data.type == "movie")
this.currentState = MOVIE_STATE;
else if //and so on...
}
谢谢,效果很好。
我唯一注意到的是:
this.currentState = MOVIE_STATE;
应该是
this.currentState = "MOVIE_STATE";
谢谢
DJ使用上述选项,您需要通过数据数组集合循环并将类型设置为其他状态名称来调整所有数据 也许更好的解决方案是循环遍历列表中的所有项并更改状态
private function changeItemrendererState():void
{
var item:mycustomitemrenderer;
for(var i:uint = 0; i < itemlist.numElements; i++)
{
item = itemlist.getElementAt(i) as mycustomitemrenderer;
item.currentState = "mynewstate";
}
}
<s:Scroller focusEnabled="false" hasFocusableChildren="true">
<s:DataGroup dataProvider="{mydata}" itemRenderer="skins.mycustomitemrenderer" width="100%" height="100%" id="itemlist">
<s:layout>
<s:TileLayout horizontalGap="2" verticalGap="2" columnAlign="justifyUsingWidth"/>
</s:layout>
</s:DataGroup>
</s:Scroller>
私有函数changeItemRenderState():void
{
变量项:mycustomitemrenderer;
对于(变量i:uint=0;i
如果使用useVirtualLayout=“true”,则此操作将不起作用,它将只影响可见项