0

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

4

1 回答 1

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;
      }
    }
  }
}

xml:

 <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,没有这个问题,如果没有孩子,不会显示discloure图标。

于 2012-10-19T03:12:42.787 回答