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

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を使用する場合、この問題は発生していません。子がない場合、開示アイコンは表示されません。

于 2012-10-19T03:12:42.787 に答える