yes got that ! Thanks !
On Feb 18, 2008 12:31 PM, Alex Harui <[EMAIL PROTECTED]> wrote: > Sorry, don't have time to look it up right now, but you're probabl > missing "implements IListItemRenderer" > > > ------------------------------ > > *From:* [EMAIL PROTECTED] [mailto: > [EMAIL PROTECTED] *On Behalf Of *learner > *Sent:* Sunday, February 17, 2008 10:22 PM > *To:* [EMAIL PROTECTED] > *Cc:* flexcoders@yahoogroups.com > *Subject:* Re: [flexcomponents] simple renderer please > help..........please review it > > > > > > > > Can you please also give me the link to the this "template" in doc?? > > When I changed the code and made my itemrender to extend > UIcomponent... > its giving me error as : > " Type Coercion failed: cannot convert > ms.messengermodule::[EMAIL PROTECTED] to > mx.controls.listClasses.IListItemRenderer." > > > > Thanks > Ps > > On Feb 16, 2008 12:11 AM, Alex Harui <[EMAIL PROTECTED]> wrote: > > Not bad for a first try. > > > > I would: > > 1) extend UIComponent instead of Canvas. You aren't using any of Canvas's > features so you'll save on size and performance > > 2) only call invalidateProperties() in the data setter. Move the code in > there to commitProperties instead. That'll probably remove the need for the > try/catch block. The way it is coded now, you'll get exceptions if the data > setter is run before child objects have been set up in createChildren > > 3) Move the positioning of your components to updateDisplayList(). > > 4) Calculate measuredWidth/Height in measure(), but you shouldn't set x,y > there as you may not actually be sized to your measured size and in general, > you'll probably want to react to that in updateDisplayList(). The measure > method should compute measuredWidth/Height from the > getExplicitOrMeasuredWidth/Height of the child components plus any spacing > and gap styles or properties. > > 5) not bother to set the avatarholder's imagesource in measure(). If > these are external images, they won't be measureable in measure() because > loading external images is asynchronous. > > > > I don't see any particular reason for why your images end up on the wrong > row. Maybe there's some problem with AvatarHolder? > > > > *The 'template' for this is in our docs. I'm sure our doc team would > love to know why the docs weren't clear enough for you.* > > > > -Alex > > > ------------------------------ > > *From:* [EMAIL PROTECTED] [mailto: > [EMAIL PROTECTED] *On Behalf Of *learner > *Sent:* Friday, February 15, 2008 12:52 AM > *To:* flexcoders@yahoogroups.com; [EMAIL PROTECTED] > *Subject:* [flexcomponents] simple renderer please help..........please > review it > > > > Hi all, > I am doing my constant effort to learn and make a decent item renderer for > a list .. > I have also attached a code that i have written for it... > please please have a look at it and tell me where i am doing wrong and > loopholes are... > > the problem that i am facing is ; > in my image holder the images are not shown properly ... meaning > sometimes the image from the different row gets displayed in the other row.. > I guessed that there is a way in which u can cache the bitmap in image > holder and things like that.. don't know in details ... > > can any body please suggest me the proper way to design a renderer for > this.. please review the following code... > > (Would be a great help if any body can design this properly for me...i > know its too much too ask.. but that will give me guideline and a sort of > template . > And I once for all ,will get the authentic way to make renderer...till > this time .. for me its just blind chess which has really exhausted me > ) > > Thanks > > my item rendere contains : > 1) image.. > 2) a text comming next to image > 3) a text comming below the text in 2) > > (Code file is attached) > package ms.messengermodule > { > import mx.containers.Canvas; > import mx.controls.Image; > import mx.controls.Label; > > public class ContactBox extends Canvas > { > > /*private var memberStatus:Label;*/ > > [Embed(source='style.swf', symbol='memberOnline')] > private var onlineIcon:Class; > > [Embed(source='style.swf', symbol='memberOffline')] > private var offlineIcon:Class; > > [Embed(source='ms/felix/css > > /assets/felixStyle.swf', symbol='memberBusy')] > private var busyIcon:Class; > > [Embed(source='style.swf', symbol='organizer')] > private var organizerIcon:Class; > > private var memberName:Label; > > private var memberDescription1:Label; > private var memberDescription2:Label; > private var memberDescription3:Label; > > private var avatarHolder:ImageHolder; > > private var description1:String; > private var description2:String; > private var description3:String; > > private var contactObject:ContactObject; > private var statusImage:Image; > private var statusIcon:Object; > private var memberNamestr:String; > private var userImage:String; > > /** > * Constructor > */ > function ContactBox() { > super(); > this.horizontalScrollPolicy = "off"; > this.verticalScrollPolicy = "off"; > > } > > override public function set data(value:Object):void { > try{ > super.data = value; > contactObject = value as ContactObject; > description1 = contactObject.extensionObject["E"]; // take > the value from some dictinory object > memberNamestr = contactObject.name.split(" ")[0]; > userImage = contactObject.imageUrl; // user image > statusIcon = ""; > getStatusIcon(); > invalidateProperties(); > } > catch(e:Error){ > trace(e.message); > } > } > > > > private function getStatusIcon():void { > if(contactObject.presence == Constants.Online_Presence){ > statusIcon = new onlineIcon() ; > } > if(contactObject.presence == Constants.offline_Presence){ > statusIcon = new offlineIcon(); > } > if(contactObject.presence == Constants.Busy_Presence){ > statusIcon = new busyIcon(); > } > } > > > > override protected function createChildren():void { > > avatarHolder = new ImageHolder(); > addChild(avatarHolder); > avatarHolder.height = 38; > avatarHolder.width = 38; > //avatarHolder.imageSource = ""; > > memberName = new Label(); > memberName.styleName = "NormalTextBoldSmall" > memberName.setStyle("color","0xbababa"); > memberName.text=""; > addChild(memberName); > > memberDescription1 = new Label(); > memberDescription1.styleName = "NormalText"; > memberDescription1.setStyle("fontWeight","normal"); > memberDescription1.text="" > addChild(memberDescription1); > > memberDescription2 = new Label(); > memberDescription2.styleName = "NormalTextSmall"; > memberDescription2.text="" > addChild(memberDescription2); > > memberDescription3 = new Label(); > memberDescription3.styleName = "NormalTextSmall"; > memberDescription3.text="" > addChild(memberDescription3); > > statusImage = new Image(); > addChild(statusImage); > statusImage.height = 10; > statusImage.width = 10; > super.createChildren(); > this.styleName="messengerlistRenderer"; > } > > > > > override protected function measure():void{ > //trace(" measure MemberBox"+ memberObject.name); > super.measure(); > memberName.text = memberNamestr//contactObject.name; > > avatarHolder.x = 0; > avatarHolder.y=0; > avatarHolder.imageSource = contactObject.imageUrl; > > memberName.width = 100 > memberDescription1.width = 150; > memberName.x = avatarHolder.width + avatarHolder.x + 4; > memberDescription1.htmlText = > description1//contactObject.discription1; > memberDescription1.x = memberName.x; > > memberDescription1.y = memberName.textHeight+5; > > var memberWidth:Number = (memberName.textWidth> > memberWidth)?memberWidth:memberName.textWidth > > statusImage.x = memberName.x + memberWidth+ 10; > statusImage.y = memberName.y + 5; > > > } > > override protected function commitProperties():void { > memberDescription1.htmlText = > description1//contactObject.extensionObjectArray[Constants.D_EVENT_NAME]; > memberName.text = contactObject.name; > statusImage.source = statusIcon; > avatarHolder.unloadImage(); > //avatarHolder.visible = false; > avatarHolder.imageSource = contactObject.imageUrl; > statusImage.source = statusIcon; > super.commitProperties(); > //trace(" commitProperties MemberBox"+ memberObject.name); > } > > > } > } > > Regards > PS > > > > > > >