閉じているTreeの特定のアイテムを選択状態にする
TreeのdataProviderにデータを設定した直後の状態、つまり、ルートのノードだけが表示されていてルートの子供はみな閉じている状態になっている。この状態で、特定の条件のアイテムを選択状態にする。
ルートから順番にアイテムを開いていき、そのアイテムの子アイテムに該当するidのノードが存在するか調べて、存在しなければその子アイテムを開いて...というように再帰的に検索を行い、もし探しているアイテムが存在すれば、そのアイテムをTreeのselectedItemに指定する。
public function foo(id:Number):void{ var items:XMLList = ... //ここにXMLリストを設定する。 for each(var item:XML in items){ tree.expandItem(item, true); } findAndSelect(items, id); } public function findAndSelect(items:XMLList, id:Number):Boolean{ for each(var item:XML in items){ tree.expandItem(item, true); var findItems:XMLList = item.item.(@id == id); if(findItems.length() > 0){ tree.expandItem(findItems[0], true); tree.selectedItem = findItems[0]; return true; }else{ var notFoundItems:XMLList = item.item; if(findAndSelect(item.item, true)){ return true; } } } return false; }