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