我想为使用自定义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>
答案 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;
}