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]
<mailto:[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]>
[mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> ] On Behalf Of learner
                Sent: Friday, February 15, 2008 12:52 AM
                To: flexcoders@yahoogroups.com
<mailto:flexcoders@yahoogroups.com> ; [EMAIL PROTECTED]
<mailto:[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

         

 

 

Reply via email to