ノードに子がない場合、ツリーノードの前に「>」カレットが表示されないようにする方法はありますか?子が空のArrayCollectionの場合は表示されないようにしたいと思います。arraycollectionをnullに設定できることは知っていますが、コード全体ですべてのnullチェックを実行する必要はありません。
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 に答える