`

运行时修改列表项的ItemRenderer(动态更改itemrenderer)

    博客分类:
  • FLEX
阅读更多
对于列表显示的数据,常常用户需要按不同的方式进行浏览,就像一般的看图软件功能一样,既可以以列表的形式,也可以以大图标、小图标的形式来显示。

但一般情况下设置itemRenderer属性的时候,在写代码时就指定了一个自定义的组件类,如果换成另外一个的话,不能像开发时那样直接给 itemRenderer属性赋一个组件的类型(字符串)就完事,因为itemRenderer是个Class的实例,所以需要通过new一个类的实例来更改,使用的实例化的类叫作ClassFactory,即类工厂。

看看简单的代码,一个列表,一个按钮,按钮事件用来处理更换List的itemRenderer,List的itemRenderer属性默认设置为小图标SmallIconRenderer
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
   <![CDATA[
    function changeRenderer():void{
     if (btnChange.label == "change to big"){
      list.itemRenderer = new ClassFactory(BigIconRenderer);
      btnChange.label = "change to small";
     }else{
      list.itemRenderer = new ClassFactory(SmallIconRenderer);
      btnChange.label = "change to big";
     }
   
    }
   ]]>
</mx:Script>
<mx:List id="list" width="300" height="300"
   itemRenderer="SmallIconRenderer" variableRowHeight="true">
   <mx:dataProvider>
    <mx:Object label="this is item A"/>
    <mx:Object label="this is item B"/>
    <mx:Object label="this is item C"/>
    <mx:Object label="this is item D"/>
   </mx:dataProvider>
</mx:List>
<mx:Button id="btnChange" label="change to big"
   click="changeRenderer()" x="308" y="10"/>
</mx:Application>

下面是小图标形式的自定义组件,其中引入了一张小图标,放一个标签用来显示列表中的数据项:

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
   <![CDATA[
    import com.nstar.base.assets.Assets;
    [Bindable]
    public var item:Object = new Object();
  
   ]]>
</mx:Script>
<mx:Image source="{Assets.nav_prev}" />
<mx:Label text="{data.label}"/>
</mx:HBox>

下面是大图标形式的自定义组件:

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
   <![CDATA[
    import com.nstar.base.assets.Assets;
    [Bindable]
    public var item:Object = new Object();
   ]]>
</mx:Script>
<mx:Image source="{Assets.iconInfo}"/>
<mx:Label text="{data.label}" fontSize="20" fontWeight="bold" color="0xff0000"/>
</mx:HBox>

这里是演示的例子

转自:http://hi.baidu.com/half_cup_coffee/blog/ite/c6fe90955567950d7af4807f.html
分享到:
评论

相关推荐

    理解_Flex_itemRenderer.pdf

    接着,会通过示例代码来展示如何创建和使用itemRenderer,以及如何根据数据动态地更改itemRenderer的内容和样式。 itemRenderer本质上是一个组件,它被用于指定如何显示数据集合中的每一项。默认情况下,Flex组件...

    itemrenderer help

    当列表控件(如List、DataGrid等)需要显示数据时,它会根据数据项的数量动态创建相应的ItemRenderer实例,并将数据绑定到这些实例上。每个ItemRenderer实例负责显示一个数据项的信息。 **3. ItemRenderer与数据...

    DataGrid的itemRenderer and HeaderRenderer

    创建`combobox`的`itemRenderer`需要确保`ComboBox`的`data`属性与数据项绑定,并且根据数据模型的需要,动态填充`ComboBox`的下拉选项。`headerRenderer`中一般不使用`combobox`,因为列头通常用于筛选或排序,而...

    flex itemRenderer深入学习--flex相册例子

    在Flex开发中,ItemRenderer是一种非常关键的组件,它允许我们自定义数据项在列表或网格等容器中的显示方式。本篇文章将深入探讨如何利用ItemRenderer实现一个灵活且功能丰富的相册示例,同时也会涉及Flex中的一些...

    ItemRenderer的用法

    3. **覆盖`updateDisplayList()`方法**:如果需要在渲染时执行特殊布局或样式更改,可以重写此方法。 4. **注册渲染器**:在主应用程序或数据控件中,通过`itemRenderer`属性或`itemRendererFunction`属性指定自定义...

    Flex 定制ItemRender详细解释

    在Flex开发中,ItemRenderer是一种强大的机制,它允许开发者自定义数据列表或组合框等容器中每一项的显示方式。ItemRenderer是ActionScript类,它扩展了MX或Spark的基类,如mx.controls.listClasses.ItemRenderer或s...

    Flex4.x 构建可编辑的List【带序号排列】

    在这里,ItemRenderer需要包含一个可编辑的文本框或其他输入控件,当用户点击List项时,该控件变为可编辑状态,用户可以修改数据。 4. **序号排列**:添加序号通常需要在数据模型中增加一个额外的字段来存储每个...

    Flex itemEditor详解

    相比之下,`itemEditor`则是在用户需要编辑列表项时动态显示的组件。这意味着在同一时间,屏幕上只会显示一个`itemEditor`实例,即当前正在编辑的那个列表项。此外,只有当用户聚焦到某一行或单元格时,`...

    flex4 list全选,反选

    在Flex4中,List组件是用于展示数据列表的常用组件,它可以显示一组可滚动的数据项。在实际应用中,我们经常需要实现对列表中的所有项进行全选或反选的操作,以便用户能快速选择或取消选择全部内容。本文将详细探讨...

    listctrl_kivylistctry水平扩展_thoughnnn_kivy_listctrl_zip_

    2. **ItemRenderer**: Kivy的ListCtrl依赖于一个ItemRenderer类来决定如何展示每个列表项。我们需要确保ItemRenderer设计为适应水平布局,这可能意味着调整其尺寸和对齐方式。 3. **ScrollEffect**: 默认的...

    flex android开发学习好实例

    我们还定义了一个自定义的itemRenderer(myRenderer),用于决定每个列表项的显示样式。 在Android平台上运行Flex应用程序,我们需要使用Adobe AIR(Adobe Integrated Runtime)SDK,它包含了将Flex应用程序打包为...

    Flex教程DataGrid归类.pdf

    - itemRenderer属性用于定义如何渲染DataGrid中的每一项,这对于自定义数据显示格式非常有用。 7. 绑定数据 - DataGrid通常与数据集合(如数组、数据库查询结果等)绑定,以便动态地显示内容。 - 通过数据绑定,...

    Flex 写的一个combox多选控件

    这样,每个列表项都会显示一个复选框。 3. **处理多选逻辑**:当用户在下拉列表中点击复选框时,我们需要更新selectedItems数组。同时,我们需要同步Combox的文本显示,可能显示所有选中项的组合,或者允许用户...

    flex datagrid 改变

    7. **模板组件**:使用ItemRenderer或AdvancedDataGrid的ItemRenderer,可以自定义每个数据项的显示方式。 在提供的文件列表中,有一个名为“ChooseGoods.mxml”的文件。这很可能是一个MXML文件,它是Flex中用XML...

    设置datagrid行背景色示例

    3. **实现行渲染器**:行渲染器通常是 `ItemRenderer` 类的子类,它会根据数据项的值来决定背景色。你可以在 `updateDisplayList()` 或 `commitProperties()` 方法中添加逻辑,检查当前行的数据,并根据条件设定背景...

    FLEX面试题

    12. **列表(List)的多项选择**:要使 `List` 组件支持多项选择,可以设置 `allowMultipleSelection` 属性为 `true`。 13. **自定义Alert**:可以通过设置 `iconClass` 属性来自定义 Alert 的图标。 14. **样式设置**...

    Flex TileList自定义间距和theme样式

    Flex TileList是Adobe Flex框架中用于显示数据列表的一个组件,它能够展示一系列的项,比如图片、文本或按钮等。这些项通常会以水平或垂直滚动列表的形式展现。TileList组件虽然功能强大,但它并没有提供直接的属性...

    AdvancedDataGrid综合应用

    5. **自定义渲染**:为了实现个性化的数据显示,可以使用itemRenderer函数为每个数据项创建自定义UI组件,例如,显示图片、链接或其他富媒体内容。 6. **拖放功能**:AdvancedDataGrid支持拖放操作,用户可以将数据...

Global site tag (gtag.js) - Google Analytics