需要采用一个界面,用CheckBox选定相关的数据,一开始准备用单独的ItemRenderer,但这样让项目太冗杂了,就采用了嵌入(Drop-in)的ItemRenderer。
在FLEX4 中,采用嵌入的方式暂时只能用MX 而不能用spark(这个不确定)...
在LIST中采用内嵌Itemrenderer的代码如下:
<mx:List id="MyList" left="10" right="10" top="10" bottom="40" alternatingItemColors="[0xf9f6f6,0xd7e8fa]"
dataProvider="{Mydata}" horizontalScrollPolicy="auto"
verticalScrollPolicy="auto">
<mx:itemRenderer>
<fx:Component>
<mx:HBox>
<fx:Script>
<![CDATA[
import mx.controls.CheckBox;
protected function checkbox_changeHandler(event:Event,obj:Object):void
{
// TODO Auto-generated method stub
if((event.target as CheckBox).selected)
event.target.parent.parent.parent.dispatchEvent(new Event("addItem",obj));
else
event.target.parent.parent.parent.dispatchEvent(new Event("delItem",obj));
}
]]>
</fx:Script>
<mx:CheckBox label="@{data.Name}" change="checkbox_changeHandler(event,data)"/>
</mx:HBox>
</fx:Component>
</mx:itemRenderer>
</mx:List>
注意上面的 </fx:Component> ,这个是在flex4中的标签。
我一开始缺少了HBOX,总是出问题。
在主程序的LIST中监听这个事件(传递参数的事件得自己写),就可以实现动态处理了。