在Spark列表的自定义itemRenderer中格式化日期

时间:2012-12-12 18:45:54

标签: list flex formatting itemrenderer flex-spark

我想为使用自定义ItemRenderer的Spark列表有效地格式化日期属性。所有日期都应该格式化相同,所以我真的不想为每个列表项实例化一个新的DateTimeFormatter。如何使用单个DateTimeFormatter格式化以下示例中的属性data.lastModified?

<?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">
    <mx:VBox height="100%" width="100%" paddingBottom="10" paddingTop="10" paddingLeft="10" paddingRight="10">
        <s:Label text="{data.name}" fontSize="16" height="100%"/>
        <mx:HBox width="100%">
            <s:Label text="{data.client}"/>
            <s:Label width="100%" text="{data.lastModified}" textAlign="right"/>
        </mx:HBox>
    </mx:VBox>
</s:ItemRenderer>

以下是用途:

<s:List id="projectsList" left="12" top="172" bottom="10" width="303"
                    dataProvider="{projectsArray}" itemRenderer="ProjectListItemRenderer"></s:List>

1 个答案:

答案 0 :(得分:2)

在ActionScript中定义DateFormatter并使其成为静态。有点像这样:

public static var dateFormatter : DateFormatter = new DateFormatter();

这将创建DateFormatter的单个实例,无论您拥有多少个类实例。但是,您必须使用类名访问DateFormatter。如果需要在DateFormatter上设置属性,可以在静态方法中设置;有点像这样:

public static var dateFormatter : DateFormatter = ThisClass.createDateFormatter();

public static function createDateFormatter():DateFormatter{
  var df :DateFormatter = new DateFormatteR():
  df.dateStyle = DateTimeStyle.MEDIUM;
  return df;
}