Flex 4 s:列表itemRenderer标签未显示

时间:2011-03-29 19:46:40

标签: flex itemrenderer

我有以下s:列表

<s:List
    id="lstOther"
    borderVisible="false"
    width="100%" height="100%"
    dataProvider="{this.handler.itemRendererType}"
    labelFunction="labelFunction"
    itemRendererFunction="itemRendererFunction">
</s:List>

itemRendererFunction和labelFunction的函数如下所示:

private function itemRendererFunction(item:Object):IFactory {
            var clazz:Class = DefaultItemRenderer;
            switch(item.data) {
                case "Security Unit":
                    clazz = CheckBox;
                    break;
                default:
                    clazz = CheckBoxEditLabel;
            }
            return new ClassFactory(clazz);
        }

        private function labelFunction(item:Object):String {
            return "testing";
        }

我的数据提供者(dataProvider =“{this.handler.itemRendererType}”)的组成如下:

public var itemRendererType:ArrayCollection = new ArrayCollection([
        {name:"otherLabel1", data:"Security Unit"},
        {name:"otherLabel2", data:"Test 1"},
        {name:"otherLabel3", data:"Test 2"}
    ]);

我首先尝试将s:List中的labelField设置为'name'。列表控件中没有显示任何内容。如上所示,我尝试使用标签函数并返回硬编码值(“测试”)。仍然没有出现。

为什么标签的文字没有显示?

非常感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:0)

我的直接猜测是this.handler为空;你应该调试,看看为什么(无论如何是处理程序?)。你是正确的使用labelField =“name”,这应该工作,但如果你没有任何数据,将不会显示任何内容。另外,我很确定你的itemRendererFunction不能正常工作,因为它需要返回扩展s:ItemRenderer的组件。

答案 1 :(得分:0)

this.handler 不为空。 handler 是定义itemRendererType的actionscript类。

答案 2 :(得分:0)

以下项目渲染器适用于您的样本:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    autoDrawBackground="true">
    <s:CheckBox label="{label}" />
</s:ItemRenderer>