2015-06-25 26 views
1

我有一个自定义的外部itemRenderer,我用它来显示项目在MX:列表中。 dataProvider是一个数组,每个元素包含4个属性。看起来好像itemRenderer实际上是获取数组,因为它显示4个项目(数组中的项目数量),但项目显示为“[object Object]”。自定义外部itemRenderer正在从dataProvider接收空对象

这是我的itemRenderer ...

<mx:Metadata> 
    [Event(type="classes.events.RemoveEntryEvent", name="removeProject")] 
</mx:Metadata> 

<mx:Script> 
    <![CDATA[ 
     import classes.events.RemoveEntryEvent; 

     import mx.controls.Alert; 
     import mx.events.CloseEvent; 
     import mx.events.FlexEvent; 

     override public function set data (value:Object):void{ 
      super.data = value; 
      //Alert.show(value.toString()); 
     } 

     public function button_clickHandler():void { 
      var alertListener:Function = function(closeEvent:CloseEvent):void{ 
       if (closeEvent.detail == Alert.YES){ 
        //dispatchEvent(new RemoveEntryEvent(RemoveEntryEvent.REMOVE_PROJECT, true, false, data)); 
       } 
      } 

      var myAlert:Alert = Alert.show("Are you sure you want to remove yourself from this project?", 
       "Remove Project", 
       (Alert.YES | Alert.CANCEL), 
       null, alertListener); 

      myAlert; 
     }  

     private function text_clickHandler():void{ 
      Alert.show("inside text_clickHandler()"); 
     } 



    ]]> 
</mx:Script> 

<!-- The mx:Text should display a hand maybe when rolledOver: !buttonMode, --> 
<mx:Text id="text" width="85%" text="{data}" fontThickness="5" click="text_clickHandler()"/> 
<mx:Button id="removeButton" label="Remove" fontSize="9" width="63" verticalCenter="0" fontWeight="normal" x="329" 
      height="17" click="button_clickHandler()"></mx:Button> 


</mx:Canvas> 

当我通过一组数据功能步骤, '价值:对象' 为空!但是,它再次显示正确数量的项目。

这里是我的MXML代码中,我的MX:名单载...

<mx:TitleWindow y="10" width="550" height="342" layout="absolute" title="LIST OF PROJECTS" cornerRadius="4" id="listOfProjects_panel" horizontalCenter="0"> 
    <mx:List alternatingItemColors="{altColors}" x="65.5" y="30" width="399" height="232" backgroundColor="#F8F8F8" fontSize="12" dataProvider="{xmlSimpleArray}" 
          id="list_of_projects_master" initialize="listInitializer()" useRollOver="false" selectable="false"> 
    </mx:List> 
    <mx:Button y="270" label="Refresh List" width="130" x="334.5" id="auth_btn_master0" fontWeight="normal"/> 
    <mx:Label x="65.5" y="10" text="Click To Select A Project:" fontWeight="bold"/> 
</mx:TitleWindow> 

这里是我的MX初始值设定:脚本...

private function listInitializer():void{ 
      //list_of_projects_master.dataProvider = xmlSimpleArray; 
      list_of_projects_master.itemRenderer = new ClassFactory(ProjectListRenderer); 
      list_of_projects_master.addEventListener(RemoveEntryEvent.REMOVE_PROJECT, updateXML); 
     } 

如果再信息需要评估问题,请让我知道

+0

btw,这是我的数组.... [Bindable] \t public var xmlSimpleArray:Array; –

回答

1

在itemrenderer中更改以下行

<mx:Text id="text" width="85%" text="{data}" fontThickness="5" click="text_clickHandler()"/> 

建议立即进行删除像

<mx:Text id="text" width="85%" text="{data.labelfieldname}" fontThickness="5" click="text_clickHandler()"/> 

希望这会有所帮助。

+0

是的,这工作!谢谢@krishnaja –