本文共 3097 字,大约阅读时间需要 10 分钟。
The following example will show you how you can use a CheckBox control as a custom item renderer in a List control in Flex. I haven’t done a lot of testing yet, so if you have any tips/suggestions/improvements, please, share them in the comments <? xml version="1.0" encoding="utf-8" ?> <!-- http://blog.flexexamples.com/2008/01/27/using-a-checkbox-control-as-a-list-item-renderer-in-flex/ --> < mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" xmlns:vo ="*" layout ="horizontal" verticalAlign ="middle" backgroundColor ="white" creationComplete ="init();" > < mx:Script > <![CDATA[ import mx.events.CollectionEvent; import mx.utils.ObjectUtil; private function init():void { arrColl.dispatchEvent(new CollectionEvent(CollectionEvent.COLLECTION_CHANGE)); } private function arrColl_collectionChange(evt:CollectionEvent):void { try { var tArr:Array = arrColl.source.filter(selectedOnly); textArea.text = ObjectUtil.toString(tArr); lbl.text = tArr.length.toString() + " item(s) selected"; } catch (err:Error) { // ignore. } } private function selectedOnly(item:ListItemValueObject, idx:uint, arr:Array):Boolean { return item.isSelected; } ]]> </ mx:Script > < mx:Array id ="arr" > < vo:ListItemValueObject label ="One" isSelected ="true" /> < vo:ListItemValueObject label ="Two" isSelected ="true" /> < vo:ListItemValueObject label ="Three" isSelected ="true" /> < vo:ListItemValueObject label ="Four" isSelected ="true" /> < vo:ListItemValueObject label ="Five" isSelected ="false" /> < vo:ListItemValueObject label ="Six" isSelected ="false" /> < vo:ListItemValueObject label ="Seven" isSelected ="false" /> < vo:ListItemValueObject label ="Eight" isSelected ="false" /> < vo:ListItemValueObject label ="Nine" isSelected ="false" /> < vo:ListItemValueObject label ="Ten" isSelected ="false" /> < vo:ListItemValueObject label ="Eleven" isSelected ="false" /> < vo:ListItemValueObject label ="Twelve" isSelected ="false" /> </ mx:Array > < mx:ArrayCollection id ="arrColl" source ="{arr}" collectionChange ="arrColl_collectionChange(event);" /> < mx:Panel id ="panel" title ="Items" status ="{arrColl.length} total" styleName ="opaquePanel" > < mx:List id ="list" dataProvider ="{arrColl}" alternatingItemColors ="[#EEEEEE, white]" width ="150" rowCount ="8" > < mx:itemRenderer > < mx:Component > < mx:CheckBox selectedField ="isSelected" change ="onChange(event);" > < mx:Script > <![CDATA[ private function onChange(evt:Event):void { data.isSelected = !data.isSelected; } ]]> </ mx:Script > </ mx:CheckBox > </ mx:Component > </ mx:itemRenderer > </ mx:List > < mx:ControlBar horizontalAlign ="right" > < mx:Label id ="lbl" /> </ mx:ControlBar > </ mx:Panel > < mx:TextArea id ="textArea" verticalScrollPolicy ="on" width ="100%" height ="{panel.height}" /> </ mx:Application > View ListItemValueObject.as package { public class ListItemValueObject { [Bindable] public var label:String; [Bindable] public var isSelected:Boolean; public function ListItemValueObject() { super(); } } } 本文转自 OldHawk 博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2008/01/31/1059338.html ,如需转载请自行联系原作者