【问题标题】:Flex/AS3 Using Multiple Item Renderers In a ListFlex/AS3 在列表中使用多个项目呈现器
【发布时间】:2011-02-23 16:57:25
【问题描述】:

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

谢谢

【问题讨论】:

  • 你使用的是什么版本的 Flex 3 或 4?另外,您将 ListBase 子类化而不是 List 是否有特殊原因?
  • Flex 3,我对 ListBase 进行子类化并没有什么特别的原因,只是有人建议我这样做,而不是对 List 进行子类化

标签: apache-flex actionscript-3 list itemrenderer


【解决方案1】:

我设法通过扩展 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;
    }

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的帮助,但我设法让我的方法发挥作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 2011-01-31
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    相关资源
    最近更新 更多