0

我有一个 itemrenderer,它包含:

<s:TextInput x="10" y="41" width="60" name="txtprice"/>

我想从外部访问这个字段。我怎样才能做到这一点?

4

1 回答 1

0

你可以这样做:

<s:List id="list" itemRenderer="com.myDomain.myProject.MyRenderer" />
<s:Button label="click me" click="onButtonClick()"/>

<fx:Script>
    <![CDATA[
        import mx.core.IVisualElement;

        protected function button1_clickHandler(event:MouseEvent):void
        {
            var myRenderer:CustomItemRenderer = list.dataGroup.getElementAt(0) as CustomItemRenderer;
        }
    ]]>
</fx:Script>

由于 itemRenderer 通常会被回收,因此不会为屏幕外的元素创建 itemRenderer。也就是说,如果您的列表有 20 个元素,并且只有前 10 个是可见的,getElementAt()那么如果您尝试获取第 11-20 个元素,则将返回 null。如果将元素滚动到视图中,则会创建/回收渲染器,然后您可以检索它。

我似乎记得有一种更好的方法来处理这个问题,但我并没有想到。

请注意,还有另一种方法:list.dataGroup.getVirtualElementAt()但这对我来说似乎与非虚拟方法的行为相同。

最后,请务必TextInput在渲染器中分配一个,id以便在检索渲染器后可以引用它:

<s:TextInput id="txtprice" />
于 2012-08-22T16:45:34.393 回答