我有一个 itemrenderer,它包含:
<s:TextInput x="10" y="41" width="60" name="txtprice"/>
我想从外部访问这个字段。我怎样才能做到这一点?
我有一个 itemrenderer,它包含:
<s:TextInput x="10" y="41" width="60" name="txtprice"/>
我想从外部访问这个字段。我怎样才能做到这一点?
你可以这样做:
<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" />