Can you pls send the code where you are declaring the arraycollection?

-Ravi

On Mar 12, 12:24 pm, Sankar <[email protected]> wrote:
> Hi,
>       It works fine, if the data(ArrayCollection) is static but it
> doesn't work if the data is dynamic i.e if you try to get the data
> from the database and am getting the runtime error as shown below
>
>          Cannot access a property or method of a null object
> reference
>
> at the line where we were setting the value to the labels in the
> commitProprties() method.Since we all know that, child component
> elements(controls) will be created and initialized first and then
> parent components will be created and initialized.In my parent
> component am firing the creationComplete event to get the data from
> the Database and it will be fired after the child components has been
> created and initialized.
>
>      In this case, first item renderer written in action script will
> be executed and in that we were trying to set the values to labels and
> the data property not available by that time and then creationComplete
> event of it's parent component gets fired and now we will have the
> data from the database.I think from 2nd time onwards data property
> will be available.
>
>  How do i solve this problem? I think itemrenderer should be executed
> only when the data from the database gets bounded to arrayCollection
> object.
> Is it correct?
>
>   Please, Can anyone help me ?
>
>  Thanks
>    sankar
>
> On Mar 11, 7:45 pm, Sankar <[email protected]> wrote:
>
> > Hi Ravi,
>
> >   I have seen your latest post and my problem got solved now.As you
> > said i added that statement and it works fine.
>
> >  Thanks
> >    sankar
>
> > On Mar 11, 7:11 pm, Ravi Mishra <[email protected]> wrote:
>
> > > Check out my second post in this thread which is as follows
>
> > > I am sorry that I misunderstood your question.
>
> > > You actually missed out a statement in createChildren Method. Just add
> > > 'this.addChild(hBox);' at the end of createChildren method.
>
> > > HTH,
>
> > > -Ravi
>
> > > On Mar 11, 4:15 pm, Sankar <[email protected]> wrote:
>
> > > > Hi Ravi Mishra,
>
> > > >   I already have seen this example but it doesn't help me . In this
> > > > example data getting displayed with the help of DataGridColumn and in
> > > > the itemRenderer written in actionScript just does the decoration by
> > > > overriding the setter for data property.
>
> > > >   But what am i trying to do is i wanted to laydown the controls also
> > > > in the action script itself like how we use the containers say HBox in
> > > > the custom itemRenderer in MXML and data proprty.  I think in this
> > > > case the link what you send doesn't help me.
>
> > > >  Thanks
> > > >    sankar
>
> > > > On Mar 11, 1:52 pm, Ravi Mishra <[email protected]> wrote:
>
> > > > > Hi Sankar,
>
> > > > > You are on the wrong way. This is not the way you write an
> > > > > itemRenderer. Please refer the folllowing link to get a clear idea
> > > > > about itemrenderers in actionscript.
>
> > > > >http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/ww...
>
> > > > > HTH,
>
> > > > > -Ravi
>
> > > > > On Mar 11, 9:31 am, Sankar <[email protected]> wrote:
>
> > > > > > Hi All,
>
> > > > > >  am trying to build item renderer for a List component in action
> > > > > > script rather than in mxml. In the action script class am creating a
> > > > > > HBox dynamically and adding Labels to is by overriding the
> > > > > > createChildern() and also overriding the updateDisplayList() and
> > > > > > commitProperties() and in which am setting the values to labels.
>
> > > > > >           When i run the application in debug mode am able to see 
> > > > > > the
> > > > > > values being set to the labels but am not seeing the values getting
> > > > > > displayed in the List control.
>
> > > > > >          Here am posting the code,so that the problem can be
> > > > > > identified.
>
> > > > > > Can anyone help me how to resolve this problem?
>
> > > > > > <?xml version="1.0" encoding="utf-8"?>
> > > > > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > > > > > layout="absolute">
> > > > > >         <mx:Script>
> > > > > >                 <![CDATA[
> > > > > >                         import mx.collections.ArrayCollection;
>
> > > > > >                         [Bindable]
> > > > > >                         private var initData:ArrayCollection = new 
> > > > > > ArrayCollection([
> > > > > >                                 {task:"pay bill", 
> > > > > > category:"Office",priority:"Medium"},
> > > > > >                                 {task:"meet ravi on 
> > > > > > sunday",category:"personal",priority:"Low"},
> > > > > >                                 {task:"buy a 
> > > > > > book",category:"friends",priority:"Medium"},
> > > > > >                                 {task:"play 
> > > > > > cricket",category:"friends",priority:"Low"},
> > > > > >                                 ]);
> > > > > >                 ]]>
> > > > > >         </mx:Script>
>
> > > > > >         <mx:List dataProvider="{initData}" width="50%" height="50%"
> > > > > >                  itemRenderer="components.RendererInAS"/>
> > > > > > </mx:Application>
>
> > > > > >     ItemRenderer file :
>
> > > > > > package components
> > > > > > {
>
> > > > > >         import mx.containers.HBox;
> > > > > >         import mx.controls.Label;
> > > > > >         import mx.controls.listClasses.BaseListData;
> > > > > >         import mx.controls.listClasses.IDropInListItemRenderer;
> > > > > >         import mx.controls.listClasses.IListItemRenderer;
> > > > > >         import mx.core.UIComponent;
> > > > > >         import mx.events.FlexEvent;
>
> > > > > >         public class RendererInAS extends UIComponent implements
> > > > > > IListItemRenderer {
>
> > > > > >                 public function RendererInAS() {
> > > > > >                    super();
> > > > > >                 }
>
> > > > > >              // Internal variable for the property value.
> > > > > >              private var _data:Object;
>
> > > > > >              private var _listData:BaseListData;
>
> > > > > >              // Make the data property bindable.
> > > > > >              [Bindable("dataChange")]
>
> > > > > >              // Define the getter method.
> > > > > >              public function get data():Object {
> > > > > >                  return _data;
> > > > > >              }
>
> > > > > >              // Define the setter method, and dispatch an event 
> > > > > > when the
> > > > > > property
> > > > > >              // changes to support data binding.
> > > > > >              public function set data(value:Object):void {
> > > > > >                  _data = value;
>
> > > > > >                  invalidateProperties();
> > > > > >                  dispatchEvent(new 
> > > > > > FlexEvent(FlexEvent.DATA_CHANGE));
> > > > > >              }
>
> > > > > >              private var hBox:HBox;
> > > > > >              private var task:Label;
> > > > > >              private var category:Label;
> > > > > >              private var priority:Label;
>
> > > > > >              override protected function createChildren():void {
> > > > > >                       super.createChildren();
>
> > > > > >                       hBox = new HBox();
>
> > > > > >                       task = new Label();
> > > > > >                       category = new Label();
> > > > > >                       priority = new Label();
> > > > > >                       hBox.addChild (task);
> > > > > >                       hBox.addChild (category);
> > > > > >                           hBox.addChild (priority);
> > > > > >              }
>
> > > > > >              override protected function commitProperties():void {
> > > > > >                       super.commitProperties();
>
> > > > > >                       hBox.horizontalScrollPolicy = 'off';
> > > > > >                       hBox.verticalScrollPolicy = 'off';
>
> > > > > >                       hBox.percentWidth = 100;
>
> > > > > >                       task.text = _data.task;
> > > > > >                       category.text = _data.category;
> > > > > >                       priority.text = _data.priority;
> > > > > >                  }
>
> > > > > >              override protected function updateDisplayList
> > > > > > (unscaledWidth:Number, unscaledHeight:Number):void {
> > > > > >                       
> > > > > > super.updateDisplayList(unscaledWidth,unscaledHeight);
> > > > > >                       hBox.move(0,0);
> > > > > >                       hBox.setActualSize( (unscaledWidth-4), 
> > > > > > unscaledHeight);
> > > > > >              }
> > > > > >          }
>
> > > > > > }
>
> > > > > >  Thanks
> > > > > >   sankar
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Flex 
India Community" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/flex_india?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to