如何在TileList中访问(引用)自定义itemRenderer?

时间:2011-05-31 22:56:09

标签: flex

我有一个包含10个项目的TileList cp。 如何从外部调用4. item(例如)中的函数,我在其中创建了TileList cp?

由于

1 个答案:

答案 0 :(得分:0)

<强>更新

根据您的评论,这应该更容易。您只需循环遍历List的dataProvider中的每一行,并进行必要的更改。在函数结束时,只需调用ArrayCollection上的refresh函数。使用下面的示例:

public function myFunction(evt:Event):void
{
  for each (var o:MyObject in myDataProvider)
  {
    o.someProperty = "Updated";
  }

  myArrayCollection.refresh();
}

更新ArrayCollection后,调用refresh函数也会导致List刷新其项呈示器。

原始答案:

听起来您希望在ItemRenderer中点击某个按钮或其他内容时调用ItemRenderer以外的功能,但仍然可以访问所点击项目的数据。

假设我没有这个,你仍然不需要访问ItemRenderer本身。你可以做这样的事情(只是一个粗略的例子):

<fx:Script>
  <![CDATA[

  public function myFunction(evt:Event):void
  {
    trace(MyObject(myList.selectedItem).someProperty.toString());
  }

  ]]>
</fx:Script>

<mx:List id="myList" dataProvider="{myDataProvider}" >
  <mx:itemRenderer>
    <fx:Component>
      <mx:CheckBox selectedField="IsSelected" change="outerDocument.myFunction(event);" />
    </fx:Component>
  </mx:itemRenderer>
</mx:List>

如果需要传递一个完全独立的参数,该参数未存储在List的dataProvider中,只需将其作为参数传递给change eventHandler。

change="outerDocument.myFunction(event, someOtherValue);"