Flex树:当树节点没有子节点时,不显示插入符号

时间:2012-10-17 21:56:27

标签: actionscript-3 flex flash-builder flex4.6

有没有办法阻止显示“>”如果节点没有子节点,则在树节点之前插入符号?当孩子们是一个空的ArrayCollection时,我希望它不显示。我知道你可以将arraycollection设置为null,但我宁愿避免在整个代码中进行所有空值检查。

1 个答案:

答案 0 :(得分:1)

创建一个这样的自定义渲染器:

 package com.simmone.renderers {
  import mx.collections.*;
  import mx.controls.treeClasses.*;
  import mx.controls.listClasses.ListBase;

  public class MyTreeItemRenderer extends TreeItemRenderer {
    public function MyTreeItemRenderer() {
      super();
    }

    override protected function updateDisplayList(unscaledWidth:Number,  
                                                  unscaledHeight:Number):void {
      super.updateDisplayList(unscaledWidth, unscaledHeight);

      if( data.children.length == 0 ) {
        super.disclosureIcon.visible = false;
      }
    }
  }
}

MXML:

 <fx:Script>
    <![CDATA[
      import mx.collections.ArrayCollection;

      private var dataArray:Array = [
        {label:"father1", children:
          [{label:"child1"},
           {label:"child2"}]},
        {label:"father2", children:[]}];

      [Bindable]
      private var dataList:ArrayCollection = new ArrayCollection(dataArray);
    ]]>
  </fx:Script>

 <mx:Tree id="tr1" width="100%" height="80"
          dataProvider="{dataList}"
          labelField="label"
          borderVisible="false"
          itemRenderer="com.simmone.renderers.MyTreeItemRenderer"/>

我发现如果使用xmllist,没有这个问题,如果没有孩子,就不会显示公开图标。