Yep, no magic here. :)

-TH

--- In flexcoders@yahoogroups.com, "Tracy Spratt" <tr...@...> wrote:
>
> Hah, Tim, your spell didn't quite do it, huh? ;) Container-based
renderers
> are problematic. For anything even slightly complex, extend
UIComponent.
>
>
>
> I copy ListItemRenderer, it is a great starting point. It is pretty
easy to
> see where to add your special incantations.
>
>
>
> Tracy Spratt,
>
> Lariat Services, development services available
>
> _____
>
> From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com]
On
> Behalf Of Tim Hoff
> Sent: Saturday, April 18, 2009 5:27 PM
> To: flexcoders@yahoogroups.com
> Subject: [flexcoders] Re: Custom List ItemRenderer / Recycling
troubles
> (height incorrect)
>
>
>
>
>
>
>
>
>
> Hi,
>
> Yes, after playing with it a little, you're correct; my suggestion
only
> works in AS. Sorry, I always extend UIComponent for itemRenderers that
> need to have a variableRowHeight.
>
> BTW, in the future, please sign your posts; so that we can put a name
to
> your warm and positive comments.
>
> -TH
>
> --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com>
ups.com,
> "wubac1" wubac1@ wrote:
> >
> > Tim, I have been using the variableRowHeight (see my original
> example). Also, one should not need to replicate the measure of
mx:Text.
> Your example disregards internal padding elements of the Text
component.
> I did try setActualSize combined with getExplicitOrMeasuredHeight, but
> that only works in ActionScript. I encourage you to try and create a
> functional example. I'm fairly confident at this point that you will
not
> get one working in MXML with mx:Text (multi-line).
> >
> > I was able to get a fully functional item renderer based on
> ListItemRenderer, which uses UITextField. However, in theory, one
should
> be able to do it in MXML. With that in mind, I replaced the
UITextField
> of my ActionScript-based renderer with mx:Text. It's probably not
> surprising to many that the renderer no longer behaves as expected.
The
> height issue appears to be tied to the component in some fashion
> (mx:Text in this case). I'd file a defect but I haven't seen much ROI
in
> such reports.
> >
> > --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com>
ups.com,
> "Tim Hoff" TimHoff@ wrote:
> > >
> > >
> > > Hi,
> > >
> > > Set the List's variableRowHeight="true" and use something like
this
> in
> > > the itemRenderer:
> > >
> > > override protected function measure():void
> > > {
> > > var textLineMetrics:TextLineMetrics = comment.measureText(
> > > comment.text );
> > >
> > > // should add paddingTop, paddingBottom and verticalGap to this
too
> > > measuredHeight = textLineMetrics.height + myLinkButton.height;
> > > }
> > >
> > > -TH
> > >
> > > --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com>
> ups.com, "Tracy Spratt" <tracy@> wrote:
> > > >
> > > > Sorry, no magic sauce here. I had some pixie dust somewhere,
but.
> Was
> > > it
> > > > Asimov or Clark that said, "Any sufficiently advanced technology
> is
> > > > indistinguishable from magic"?
> > > >
> > > >
> > > >
> > > > When I needed a variable height renderer, I copied
> ListItemRenderer
> > > and
> > > > modified to my needs. That was the only way I could get it to
> work. It
> > > is
> > > > also *much* more performant than a container based renderer. The
> magic
> > > is
> > > > indeed in the measure() function.
> > > >
> > > >
> > > >
> > > > If you do not have a lot of items to renderer, Repeater works
well
> > > with
> > > > variable heights.
> > > >
> > > >
> > > >
> > > > Tracy Spratt,
> > > >
> > > > Lariat Services, development services available
> > > >
> > > > _____
> > > >
> > > > From: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com>
> ups.com
> [mailto:flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com>
ups.com]
> > > On
> > > > Behalf Of wubac1
> > > > Sent: Saturday, April 18, 2009 2:02 AM
> > > > To: flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com>
ups.com
> > > > Subject: [flexcoders] Custom List ItemRenderer / Recycling
> troubles
> > > (height
> > > > incorrect)
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > I'm attempting to create a very simple item renderer for
mx:List.
> I've
> > > found
> > > > that when the dataProvider is static, there are no problems with
> the
> > > custom
> > > > item
> > > > renderer. However, when the dataProvider is dynamic, the height
of
> the
> > > item
> > > > renderer is not correct (and scroll bars appear for each
renderer
> with
> > > any
> > > > meaningful # of rows). I've set variableRowHeight="true" for the
> List.
> > > I've
> > > > also tried overriding the measure function and invaliding the
size
> > > when a
> > > > dataChange event is dispatched (based on information provided on
> > > FlexCoders
> > > > in previous discussions along these lines).
> > > >
> > > > CommentRenderer.mxml:
> > > >
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <mx:VBox xmlns:mx="http://www.adobe.
> <http://www.adobe. <http://www.adobe.com/2006/mxml> com/2006/mxml>
> > > > com/2006/mxml" width="100%">
> > > > <mx:Script>
> > > > <![CDATA[
> > > > override protected function measure():void
> > > > {
> > > > super.measure();
> > > > measuredHeight = comment.textHeight;
> > > > }
> > > > ]]>
> > > > </mx:Script>
> > > > <mx:LinkButton label="{data.commenter.name}"/>
> > > > <mx:Text id="comment" width="100%" text="{data.comment}"
> > > > dataChange="invalidateSize()"/>
> > > > </mx:VBox>
> > > >
> > > > The mx:List definition:
> > > >
> > > > <mx:List id="comments" itemRenderer="com.test.CommentRenderer"
> > > width="100%"
> > > > height="100%"/>
> > > >
> > > > I've looked over the ListItemRenderer, but have so far been
unable
> to
> > > glean
> > > > the
> > > > magic sauce that makes the item renderer function correctly when
> the
> > > control
> > > > recycles. Can someone explain / provide a functional example(s)
> with
> > > mx:Text
> > > > (ActionScript and MXML examples preferred, for completeness)?
> > > >
> > >
> >
>



Reply via email to