Apache flex Flex使用ItemRenderer类在自定义项目渲染器中实现IDropInListItemRenderer
我正在用Flex为DataGrid制作一个定制的ItemRenderer。我的问题是,我需要能够使用listData,这样我就可以找出ItemRenderer所在的当前行。不过,我似乎无法正确地实现IDropInListItemRenderer,因为无论什么样的listData对我来说总是空的 下面是我在顶部的代码:Apache flex Flex使用ItemRenderer类在自定义项目渲染器中实现IDropInListItemRenderer,apache-flex,itemrenderer,Apache Flex,Itemrenderer,我正在用Flex为DataGrid制作一个定制的ItemRenderer。我的问题是,我需要能够使用listData,这样我就可以找出ItemRenderer所在的当前行。不过,我似乎无法正确地实现IDropInListItemRenderer,因为无论什么样的listData对我来说总是空的 下面是我在顶部的代码: <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"xmlns:mx="library://ns.adobe.co
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark" autoDrawBackground="false" styleName="gRenderer" dataChange="setStates()" implements=" mx.controls.listClasses.IDropInListItemRenderer">
然后我有:
private var _listData:BaseListData;
public function get listData():BaseListData {
return this._listData;
}
public function set listData( value:BaseListData ):void {
this._listData = value;
}
但在我的set data方法中,我尝试这样做:
override public function set data( value:Object ):void {
super.data = value;
var row : int = listData.rowIndex;
}
但在运行时,它抛出一个错误,表示它正在尝试访问null对象的属性。在我的调试器中,我可以看到listData为null。我不明白为什么。从我在网上到处看到的情况来看,我似乎在做所有需要的事情。我错过了什么
谢谢 看起来您正在为spark datagrid构建自定义ItemRenderer。如果是,请使用s:GridItemRenderer而不是基类s:ItemRenderer。您可以引用rowIndex的一个公共属性
override public function set data( value:Object ):void {
super.data = value;
trace(rowIndex);
}
您是在处理Spark DataGrid还是MXDataGrid?在MXDataGrid中使用Spark ItemRenderer应该使用DataGridListData而不是listData。是什么让您认为原始海报使用的是Spark DataGrid?根据他的帖子,我无法判断他是在使用Spark还是MX数据网格。我看到他在使用Spark名称空间(s:ItemRenderer xmlns:s=”library://ns.adobe.com/flex/spark)在他的mxml中,我可以并且愿意使用GridItemRenderer,这是一个很好的建议。问题是,这是我的物品渲染器:问题是,它告诉我“这里不允许元素s:转换”。@slukse,这并不意味着他在使用Spark DataGrid;由于还列出了MX名称空间。。但是,您是对的,您不能将spark ItemRenderer类与基于MX列表的类一起使用,您必须使用MXItemRenderer类。Flextras,对我来说是MXItemRenderer吗?说我应该用这个?