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