`

Flex ItemRenderer 自定义组件

    博客分类:
  • flex
阅读更多

1.MyListItemRenderer.mxml:

 

<?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:states>
  <s:State name="normal"/>
  <s:State name="hovered"/>
  <s:State name="selected" />
 </s:states>
 
 <s:layout>
  <s:VerticalLayout/>
 </s:layout>
 
 <s:HGroup verticalAlign="middle" paddingTop="0" paddingBottom="0">
  <mx:Image source="{data.photo}" width="50" height="40" alpha.hovered=".5"/>
  <s:Label text="{data.name}" color.hovered="0x1313cd" color.selected="0x000000" verticalAlign="bottom"/>
 </s:HGroup>
 
</s:ItemRenderer> 

2.ListItem.mxml:  //使用上面的ItemRenderer

 

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx"
      xmlns:local="zw.test.render.*" >
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 
 <fx:Script> 
  <![CDATA[
   import spark.events.IndexChangeEvent;
   import zw.test.render.MyListItemRenderer;
   
   [Bindable]private var totalPrice:Number = 0.00;
   
   protected function itemIndexChangeHandler(event:IndexChangeEvent):void
   {
    if (ta.text.length!=0)
     ta.text=ta.text+"\n"+myList.selectedItem.name + " $"+myList.selectedItem.price;
    else ta.text=myList.selectedItem.name+ " $"+myList.selectedItem.price;
    totalPrice += Number(myList.selectedItem.price);
   }
   protected function buyBtn_clickHandler(event:MouseEvent):void
   {
    txtResponse.text="Thank you for your order totaling: " + usdFormatter.format(totalPrice) + "\nItems will ship in 3 days.";
   }
   
  ]]>
 </fx:Script>
 <fx:Declarations>
  <mx:CurrencyFormatter id="usdFormatter" precision="2" currencySymbol="$"
         decimalSeparatorFrom="." decimalSeparatorTo="." useNegativeSign="true"
         useThousandsSeparator="true" alignSymbol="left"/>
 </fx:Declarations>
 <fx:Style>
  @namespace "library://ns.adobe.com/flex/spark";
  #vGrp {
   color: #000000;
   fontFamily: "Arial";
   fontSize: "12";
  }
 </fx:Style>
 
 <s:Panel title="List Sample"
    width="100%" height="100%"  
    skinClass="skins.TDFPanelSkin">
  <s:VGroup id="vGrp" horizontalCenter="0" top="3"
      width="80%" height="75%">
   <s:HGroup verticalAlign="middle">
    <s:Label text="Select items to add, price will be shown when added:"
       verticalAlign="bottom"/>
   </s:HGroup>
   <s:HGroup >
    <s:List id="myList" height="157" width="160"  x="20" y="20"
      itemRenderer="zw.test.render.MyListItemRenderer"
      change="">
     <s:dataProvider>
      <s:ArrayCollection> 
       <local:Item name="Backpack" photo="assets/backpack.jpg" price="29.99"/>
       <local:Item name="Boots" photo="assets/boots.jpg" price="69.99"/>
       <local:Item name="Compass" photo="assets/compass.jpg" price="12.99"/>
       <local:Item name="Goggles" photo="assets/goggles.jpg" price="14.99"/>
       <local:Item name="Helmet" photo="assets/helmet.jpg" price="47.99"/>
      </s:ArrayCollection>
     </s:dataProvider>
    </s:List>
    <s:TextArea id="ta" width="{myList.width}" height="{myList.height}"
       color="0xAE0A0A" fontWeight="bold"/>
    <s:VGroup>
     <mx:Spacer height="10"/>
     <s:Label text="Total of Items selected: {usdFormatter.format(this.totalPrice)}"/>
     <s:Button id="buyBtn" horizontalCenter="0" bottom="30" label="Buy Now!"
         fontWeight="bold"
         click="buyBtn_clickHandler(event)"/>
     <s:Label id="txtResponse"/>
    </s:VGroup>
   </s:HGroup>
  </s:VGroup>
  <s:Label bottom="15" horizontalCenter="0" width="95%" verticalAlign="justify" color="#323232"
     text="The Spark List control displays a list of data items. Its functionality is
     very similar to that of the SELECT form element in HTML. The user can select one or more items from the list.
     The List control automatically displays horizontal and vertical scroll bar when the list items do not fit
     the size of the control."/>
 </s:Panel>
 
</s:Application>

3.Item.as:

 

package zw.test.render
{
 public class Item
 {
  public function Item()
  {
  }
  private var _name:String;
  private var _photo:String;
  private var _price:String;
  
  public function get name():String
  {
   return _name;
  }
  
  public function set name(name:String):void
  {
   _name = name;
  }
  
  public function get photo():String
  {
   return _photo;
  }
  
  public function set photo(photo:String):void
  {
   _photo = photo;
  }
  
  public function get price():String
  {
   return _price;
  }
  public function set price(price:String):void
  {
   _price = price;
  }
 }
}

 

4.

分享到:
评论

相关推荐

    Flex手机项目自定义List的ItemRenderer

    在Flex手机项目开发中,创建自定义的List组件ItemRenderer是一项常见的需求,目的是为了提供更加丰富和个性化的显示效果。本文将深入探讨如何利用IconItemRenderer来实现这一目标,同时结合具体的实例,介绍两种不同...

    flex itemRenderer 渲染机制的概念和使用

    Flex中的itemRenderer是一种关键的组件渲染机制,它允许开发者自定义列表或数据集项的显示方式。在Flex应用中,特别是在处理数据集如ArrayCollection时,我们常常需要以不同的方式展示每个项目,例如图片、文本或者...

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

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

    Flex ItemRenderer

    Flex ItemRenderer 是Adobe Flex框架中的一个重要概念,它主要用于自定义MX和Spark组件列表视图(如List、DataGrid等)中的每一项显示样式。ItemRenderer允许开发者根据数据项的内容个性化呈现,提供更丰富的用户...

    理解_Flex_itemRenderer.pdf

    在Flex中,itemRenderer是一个非常重要的概念,它允许开发者对列表、数据网格、树等数据组件的显示方式进行定制。 在本文中,将首先介绍内联itemRenderer的概念和使用方法,然后探讨itemRenderer的设计目的和Flex...

    flex树自定义节点图标

    Flex Tree(灵活的树)是一种能够动态展示层级关系的组件,广泛应用于各种业务场景,例如文件系统、组织结构、菜单导航等。本主题将深入探讨如何在Flex Tree中实现自定义节点图标,以及与之相关的源码分析。 1. **...

    Flex 自定义Datagrid的ItemRender

    要创建一个自定义ItemRenderer,首先需要继承Flex的基础ItemRenderer类,如MXItemRenderer或SparkItemRenderer,然后在其中添加所需的组件和逻辑。例如,如果你需要一个包含日期显示的ItemRenderer,你可以这样开始...

    Flex 自定义ToolTip

    - **自定义`ToolTip`**:`itemRenderer`属性被用来指定每个列表项的渲染器,这里用到了`CustomToolTip`。`toolTipCreate`和`toolTipShow`事件处理器负责在适当的时机创建和显示`ToolTip`。 ### 4. 解析`Custom...

    Flex中itemRenderer的使用简介

    其中,`myData`是数据提供者,`my`是命名空间,指向自定义组件的位置。 总之,Flex中的ItemRenderer是实现数据可视化和交互性的重要工具。通过自定义ItemRenderer,我们可以创建独特且富有表现力的用户界面,增强...

    Flex内联itemRenderer

    例如,你可能会看到如何处理鼠标悬停事件、添加点击事件监听器,或者如何在itemRenderer中嵌入自定义组件等。 总之,掌握Flex内联itemRenderer的使用,对于提升Flex应用的用户体验和视觉效果至关重要。通过实践和...

    flex4Tree组件分层显示数据示例

    总之,这个“flex4Tree组件分层显示数据示例”将演示如何在Flex4环境中创建一个功能完善的Tree组件,包括数据绑定、自定义渲染器、事件处理和优化性能的方法。通过深入研究这个示例,开发者可以更好地理解和掌握在...

    Flex项呈示器ItemRenderer

    在Flex编程中,ItemRenderer是一种关键的组件,用于在数据列表或树等容器中自定义显示数据项的方式。本文将深入探讨Flex项呈示器(ItemRenderer)的概念、使用方法,以及如何根据需求定制它来展示用户信息,如头像和...

    flex4做的itemrenderer呈现器

    在Flex4中,ItemRenderer是一种强大的工具,用于自定义数据Grid、List或其他数据绑定组件中的项显示方式。本文将深入探讨如何使用Flex4创建一个ItemRenderer,以实现类似雅虎聊天界面的效果,并介绍相关的核心概念和...

    Flex高级组件详细介绍

    此时可以通过自定义组件的方式进行补充。 - **自定义扩展Flex框架中已有的组件**:对现有组件进行扩展以满足特定的需求,比如增加新的属性、方法或事件处理逻辑。 ##### 2. Flex高级组件类别 - **UIComponent**: ...

    Flex Tree组件的实线连接线

    4. 应用自定义渲染器:在Tree组件的mxml代码中,通过`&lt;mx:Tree itemRenderer&gt;`属性,指定我们刚刚创建的自定义TreeItemRenderer类。 5. 测试与优化:最后,运行应用并检查效果。可能需要根据实际情况调整线条的位置...

    Flex DataGrid 插入子组件

    在Flex开发中,DataGrid控件是一个非常常用的数据展示组件,它允许...无论是简单的按钮,还是复杂的自定义组件,都可以根据需求定制,以满足不同场景下的应用需求。在实际开发中,务必注意性能优化和用户体验设计。

    flex 自定义dataGrid渲染器.根据数据变色

    自定义渲染器是Flex组件定制的一部分,它可以让我们对UI元素的显示方式有更大的控制力。在这个场景中,我们创建了一个针对DataGrid的自定义Label渲染器,这个渲染器能够根据数据显示不同的颜色,以突出关键信息或者...

    Flex 的树加线条

    在这个特定的情况下,我们讨论的是如何在Flex的Tree组件上添加自定义的线条,以提升视觉效果和用户体验。 标题“Flex的树加线条”指的是为Flex中的Tree组件添加特定的线条渲染,以改善其外观。这通常是通过自定义...

    flex自定义datagrid

    在Flex编程中,自定义DataGrid是常见的需求,特别是在处理大量数据并需要提供用户友好的交互体验时。本文将深入探讨如何在...在实际开发过程中,不断调试和优化这些自定义组件,将有助于提升应用的整体性能和易用性。

    flex4 选择树组件

    6. **自定义节点**:除了基本的文本节点,你还可以创建自定义节点组件,这可以通过`itemRenderer`属性实现。自定义渲染器可以为每个节点提供更复杂的视图,如包含图标、复选框或其他UI元素。 7. **折叠与展开**:...

Global site tag (gtag.js) - Google Analytics