You CAN override set data() in UIComponent.
Look at the code for ListItemRenderer for a very good example of how to do an renderer. Or see Alex's examples. Tracy ________________________________ From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of learner Sent: Sunday, January 13, 2008 11:56 PM To: [EMAIL PROTECTED] Cc: flexcoders@yahoogroups.com Subject: [flexcoders] Re: [flexcomponents] item renderer for list but if I don't extend canvas...it does not let me override the "set data" method if i don't make a override for set data....how can modify the properties of the data supplied to item render from dataprovider...?? On Jan 11, 2008 11:56 PM, Alex Harui <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote: You should extend UIComponent and not Canvas. You are not using any Canvas features so you don't need the weight. ________________________________ From: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> [mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> ] On Behalf Of learner Sent: Friday, January 11, 2008 2:23 AM To: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> ; flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> Subject: [flexcomponents] item renderer for list hi all, while creating a Itemrender of for the list , I am facing stranger problems 1. the data displayed in the itemrendere gets screwed up while scrolling 2. it takes lots of time (> 1 sec ) to render list Can somebody please anyalyse this and tell me that what is that which is taking resources ... Any help would be great. here is the itemrendere : package ms.chatmodule.view { import flash.events.MouseEvent; import ms.chatmodule.controls.ChatController; import ms.imfusion.model.MemberObject; import ms.imfusion.util.view.ImageHolder; import mx.containers.Canvas ; import mx.controls.Image; import mx.controls.Label; import mx.controls.listClasses.BaseListData; import mx.controls.listClasses.IDropInListItemRenderer; import mx.controls.listClasses.IListItemRenderer ; import mx.controls.listClasses.ListData; import mx.core.BitmapAsset; import mx.core.IDataRenderer; import mx.core.UITextField; /** * Displays one row in memberList */ public class MemberBox extends Canvas implements IDataRenderer, IDropInListItemRenderer, IListItemRenderer { private var memberName:Label; private var memberStatus:UITextField; [Embed(source='ms/felix/css/assets/felixStyle.swf', symbol='memberOnline')] private var onlineIcon:Class; [Embed(source='ms/felix/css/assets/felixStyle.swf', symbol='memberOffline')] private var offlineIcon:Class; [Embed(source='ms/felix/css/assets/felixStyle.swf', symbol='memberBusy')] private var busyIcon:Class; [Embed(source='ms/felix/css/assets/felixStyle.swf', symbol='organizer')] private var organizerIcon:Class; private var memberObject:MemberObject; private var statusImage:Image; private var orgnizerImage:Image; private var imgObj:BitmapAsset; private var avatarHolder:ImageHolder; private var serviceStatus:String; private var memberColor:uint; private var statusIcon:Object; private var statusString:String; /** * Constructor */ function MemberBox() { super(); this.horizontalScrollPolicy = "off"; this.verticalScrollPolicy = "off" } override public function set data(value:Object):void { super.data = value; memberObject = value as MemberObject; memberColor = 0xbababa; orgnizerImage.source = new organizerIcon(); if(memberObject.userRole == "A"){ orgnizerImage.visible = true; } else{ orgnizerImage.visible = false; } avatarHolder.unloadImage(); //trace("setData MemberBox " + memberObject.name + " --- " + this.listData.owner["listData"].label) serviceStatus = this.listData.owner["listData"].label; statusString = ""; statusIcon = ""; getMemberStatuts(); getStatusIcon(); invalidateProperties(); } private function getMemberStatuts():void { if(serviceStatus == "L") { // event is locked if(memberObject.responseToLockedChoice == "Y") { memberColor = 0x196a0c; }else if(memberObject.responseToLockedChoice == "N") { memberColor = 0xff2a0e; } } else if(memberObject.hasResponded == 'Y'){ memberColor = 0x0a92cb; } if(memberObject.hasSeen == "U") { statusString = "(Not Seen Yet)"; if(memberObject.inviteEmailStatus == "FD") { statusString= "(Delivery Failed)"; } } } private function getStatusIcon():void { if(memberObject.presence == "Online"){ statusIcon = new onlineIcon() ; } if(memberObject.presence == "Offline"){ statusIcon = new offlineIcon(); } if(memberObject.presence == "Busy"){ statusIcon = new busyIcon(); } } override protected function createChildren():void { //trace("createChildren MemberBox"); super.createChildren(); orgnizerImage = new Image(); addChild(orgnizerImage); orgnizerImage.height = 10; orgnizerImage.width = 10; avatarHolder = new ImageHolder(); addChild(avatarHolder); avatarHolder.height = 35; avatarHolder.width = 35; memberName = new Label(); memberName.styleName = "NormalTextBoldSmall" addChild(memberName); memberStatus = new UITextField(); memberStatus.styleName = "NormalTextSmall"; addChild(memberStatus); statusImage = new Image(); addChild(statusImage); statusImage.height = 5; statusImage.width = 5; addEventListener(MouseEvent.CLICK,showChatWindow) } private function showChatWindow(event:MouseEvent):void { ChatController.getInstance().getChatDetails(memberObject.userId); } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{ //trace("updateDisplayList MemberBox"+ memberObject.name) super.updateDisplayList(unscaledWidth,unscaledHeight) /* trace("updateDisplayList MemberBox " + memberObject.name + " --- "+ this.listData.owner["listData"].label) avatarHolder.y=0; memberName.x = avatarHolder.width + avatarHolder.x + 10 ; memberName.width = 70 ; var widthofmemberName:Number = ( memberName.textWidth>65) ? 65 : memberName.textWidth; memberStatus.x = memberName.x + widthofmemberName statusImage.x = memberStatus.x + memberStatus.textWidth+ 10; statusImage.y = memberName.y + 5; avatarHolder.x = orgnizerImage.width + 10; */ } override protected function measure():void{ //trace(" measure MemberBox"+ memberObject.name); super.measure(); avatarHolder.imageSource = memberObject.imageUrl; memberName.setStyle("color",memberColor); memberStatus.text = statusString; memberName.text = memberObject.name; avatarHolder.y=0; memberName.x = avatarHolder.width + avatarHolder.x + 10 ; memberName.width = 70 ; var widthofmemberName:Number = ( memberName.textWidth>65) ? 65 : memberName.textWidth; memberStatus.x = memberName.x + widthofmemberName statusImage.x = memberStatus.x + memberStatus.textWidth+ 10; statusImage.y = memberName.y + 5; avatarHolder.x = orgnizerImage.width + 10; } override protected function commitProperties():void { memberStatus.text = statusString; memberName.text = memberObject.name; memberName.setStyle("color",memberColor); super.commitProperties(); statusImage.source = statusIcon; //trace(" commitProperties MemberBox"+ memberObject.name); } /** * @private * Storage for the listData property. */ private var _listData:ListData; [Bindable("dataChange")] /** * The implementation of the <code>listData</code> property * as defined by the IDropInListItemRenderer interface. * @see mx.controls.listClasses.IDropInListItemRenderer */ public function get listData():BaseListData { return _listData; } /** * @private */ public function set listData(value:BaseListData):void { _listData = ListData(value); invalidateProperties(); } } } Regards PS