Flex / AS3在列表中使用多个项目渲染器

时间:2011-02-23 16:57:25

标签: flex actionscript-3 list itemrenderer

我正在尝试在列表中放置多个项目渲染器,因为我想要显示几种不同类型的对象。我尝试创建一个扩展ListBase的新类,并在此函数中添加覆盖公共函数createItemRenderer和我的代码。然后我实例化新类并将其数据作为dataProvider给它,但是我的新类中永远不会调用createItemRenderer,有人可以帮我吗?

谢谢

2 个答案:

答案 0 :(得分:3)

我设法通过扩展List而不是ListBase来解决这个问题,所以感谢shakakai让我考虑到这一点:)

如果其他人有类似问题,我的代码就是这样:

public class MultipleRenderersList extends List
{       
    override public function createItemRenderer(data:Object):IListItemRenderer
    {
            if (data is Type1)
        {
            return new Type1Component;
        }
        else if (data is Type2)
        {
            return new Type2Component;
        }

        return null;
    }

答案 1 :(得分:2)

我过去通过创建可以处理不同类型数据的单个项呈示器来解决这个问题。有几种方法可以做到这一点,例如根据数据类型更改状态,或使用基于数据类型切换的ViewStack,或使用actionscript创建/添加子组件以适当地显示数据。只需覆盖项呈示器上的设置数据方法,并根据需要切换组件。希望有所帮助。