带有textrenput的带有itemrenderer的Flex 4.6

时间:2012-08-22 16:06:58

标签: flex itemrenderer

我有一个包含以下内容的itemrenderer:

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

我想从外面访问这个字段。 我怎么能这样做?

1 个答案:

答案 0 :(得分: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>

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

我似乎想起了一个更好的解决方法,但不会想到它。

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

最后,请务必将渲染器中的TextInput分配为id,以便在检索渲染器后引用它:

<s:TextInput id="txtprice" />