访问List的itemRenderer的组件中定义的方法

 

如何引用一个List的itemRenderer里的自定义方法,翻了翻手册也没大看见有现成的函数,终于琢磨出了一个,不知道好不好,发上来再说:
主程序文件List1.mxml:
<? xml version ="1.0" encoding ="utf-8" ?>
< mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" >
   < mx:Style >
    Application
    {
    font-size:12px;
    }
   </ mx:Style >
   < mx:Script >
    import mx.controls.Alert;
    import mx.controls.listClasses.ListBaseContentHolder;
    

    private function handleClick():void
    {
      if(txt.text=="")
      Alert.show("请输入数字1-7(注意:未验证合法性)");
      else
      {
        var n:int=parseInt(txt.text);
        //这句是关键代码
        (mylist.getChildAt(2) as ListBaseContentHolder).listItems[n-1][0].alertBtn();
      }
    }
   </ mx:Script >
   < mx:Model id ="arr" >
     < root >
       < item label ="按钮1" />
       < item label ="按钮2" />
       < item label ="按钮3" />
       < item label ="按钮4" />
       < item label ="按钮5" />
       < item label ="按钮6" />
       < item label ="按钮7" />
       < item label ="按钮8" />
       < item label ="按钮9" />
     </ root >
   </ mx:Model >
   < mx:List id ="mylist" dataProvider ="{arr.item}" width ="100"      rowCount ="9" leading ="0" itemRenderer ="MyRenderer" />
   < mx:TextInput id ="txt" />
   < mx:Button label ="触发" click ="handleClick();" />
</ mx:Application >
 
itemRenderer的组件文件MyRenderer.mxml:
<? xml version ="1.0" encoding ="utf-8" ?>
< mx:Box xmlns:mx ="http://www.adobe.com/2006/mxml" width ="100%" height ="100%" horizontalGap ="0"     
   verticalGap ="0" paddingLeft ="0" paddingRight ="0"      paddingTop ="0" paddingBottom ="0" >
   < mx:Script >
    import mx.controls.Alert;
    
    public function alertBtn():void
    {
    Alert.show("触发了alertBtn(),我是:"+btn.label);
    }
   </ mx:Script >
   < mx:Button id ="btn" label ="{data.label}" width ="100%" cornerRadius ="0" />
</ mx:Box >
 
运行演示,输入呼叫的实例位置1-9:我输入3,然后单击按钮:
可见调用了实例方法。
 
注:走了不少弯路,起初我以为通过List的getChildAt()可以得到renderer的引用,后来发觉不是,通过Alert它发现其 实getChildAt(3)得到的是ListBaseContentHolder的实例,后查了查ListBaseContentHolder得方法里 面有个listItems数组放着每一项的引用,于是有了引用什么都好说了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值