知识点总结:
1、createItemEditor () 方法
public function createItemEditor(colIndex:int, rowIndex:int):void
使用由 itemEditor 属性指定的编辑器在 editedItemPosition 为项目渲染器创建项目编辑器。
此方法将编辑器实例设置为 itemEditorInstance 属性。
您只能从 itemEditBegin 事件的事件侦听器中调用此方法。若要在其它时间创建编辑器,请设置 editedItemPosition 属性以生成 itemEditBegin 事件。
参数 colIndex:int — 列索引。对于 List 控件,Flex 将此属性的值设置为 0。
rowIndex:int — 要编辑的项目的数据提供程序中的索引。
2、editedItemPosition 属性
editedItemPosition:Object []
正在编辑的数据提供程序项目的项目渲染器的列索引和行索引(如果有)。
此 Object 包含 columnIndex 和 rowIndex 这两个字段,分别是项目的从零开始的列索引和项目索引。对于 List 控件,columnIndex 属性始终为 0;例如:{columnIndex:0, rowIndex:3}。
设置此属性会将项目滚动到视图中,并会调度 itemEditBegin 事件以打开指定项目上的项目编辑器。
(也就是说一旦设置editedItemPosition 的值它就会自动调度createItemEditor () 方法 )此属性可用作数据绑定的源。
3、如何设置editedItemPosition的值,示例:List控件.editedItemPosition=
{rowIndex:Number(menuBarTree.selectedIndex),columnIndex:Number(0)};
4、对于FLEX帮助Example: Modifying data passed to or received from an item editor 中的createItemEditor ()尚有疑问,先搁着~
所以,如果想通过鼠标的方式来打开项目编辑器就可以通过设置editedItemPosition属性来实现。
示例代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" >
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.ListEvent;
import flash.events.Event;
public var myArray:Array = ["AL", "AK", "AR"];
var listData:ArrayCollection=new ArrayCollection(myArray);
private function init():void
{
var contextMenu1:ContextMenu=new ContextMenu();//创建右键菜单
contextMenu1.hideBuiltInItems();//隐藏内置菜单
var renameMenuItem:ContextMenuItem=new ContextMenuItem("重命名");
contextMenu1.customItems.push(renameMenuItem);
renameMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT ,renameHandler);
myList.contextMenu=contextMenu1;
}
private function renameHandler(e:ContextMenuEvent):void
{
myList.editable=true;
myList.editedItemPosition = { rowIndex:Number(myList.selectedIndex), columnIndex:Number(0) };
}
private function itemEndHandler(e:Event):void
{
myList.editable=false;
}
]]>
</mx:Script>
<mx:List id="myList" dataProvider="{listData}" x="200" y="100" width="180" height="322" itemEditEnd="{itemEndHandler(event)}"/>
</mx:Application>
看了两天的项目渲染之类的~~曾经还想过自己重新来写一个项目编辑器,是啊,看到那些正规的代码心里有种踊跃一试的冲动,无奈啊,水平烂得不能再烂了~~决定暂时放弃修改程序源代码的想法~~试了两次,可结果都很可笑,不但把自己搞得云里雾里严重打击了自己的自信心,最郁闷的是,到最后实现自己想的的效果往往就只是十几行,甚至是一两行代码~~想一步登天说的就是我这种人~~
有时候想想自己是不是太笨了,两天的时间才解决这么个问题~~如果不是昨晚找到了FLEX的中文帮助,我估计啊没个三五十天这个问题还是不能解决~~~~英文英文~~NND~~今天糗死了~“To create an editor at other times, set the editedItemPosition property to generate the itemEditBegin event.
”我对它的理解居然是editedItemPosition 属性产生itemEditBegin事件,还死命地在想要怎么弄,唉~~~无语,先不说这句话不是这么翻译的,可有见过editedItemPosition 属性产生itemEditBegin事件的吗?有这种说法吗?这就是代码写得太少了的有力证据~~~
好了,不说了,吃面去~~