Flex使用ItemRenderer类在自定义项呈示器中实现IDropInListItemRenderer

时间:2012-07-16 14:48:52

标签: flex itemrenderer

我正在Flex中创建一个Custom ItemRenderer,用于DataGrid。我的问题是,我需要能够使用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数据方法中,我尝试这样做:

 override public function set data( value:Object ):void {
        super.data = value;
       var row : int = listData.rowIndex;
    }

但是在运行时它会抛出一个错误,说它正在尝试访问一个null对象的属性。在我的调试器中,我可以看到listData为null。我无法弄清楚为什么。从我在网上到处读到的内容看起来我正在做所需的一切。我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来您正在为spark数据网格构建自定义ItemRenderer。如果是这样,而不是使用基类s:ItemRenderer使用s:GridItemRenderer。您可以参考rowIndex的公共属性。

override public function set data( value:Object ):void {
    super.data = value;
    trace(rowIndex);
}