Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex使用ItemRenderer类在自定义项目渲染器中实现IDropInListItemRenderer_Apache Flex_Itemrenderer - Fatal编程技术网

Apache flex Flex使用ItemRenderer类在自定义项目渲染器中实现IDropInListItemRenderer

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

我正在用Flex为DataGrid制作一个定制的ItemRenderer。我的问题是,我需要能够使用listData,这样我就可以找出ItemRenderer所在的当前行。不过,我似乎无法正确地实现IDropInListItemRenderer,因为无论什么样的listData对我来说总是空的

下面是我在顶部的代码:

<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吗?说我应该用这个?