2011-03-30 65 views
0

我目前正在Adobe Flex/Actionscript中为一个人的搜索应用程序创建一个列表。目前,列表显示1行文字:列表显示多行Adobe Flex/Actionscript

<fx:Script> 
    <![CDATA[ 
     import model.PersonSummary; 
     import mx.collections.ArrayCollection; 
     import spark.events.IndexChangeEvent; 

     [Bindable] 
     public var listOfPeople:ArrayCollection; 

     public function populate():void{ 

      listOfPeople = new ArrayCollection(String(data).split("\n")); 
     } 

    ]]> 
</fx:Script> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 
<s:List width="100%" id="results" dataProvider="{listOfPeople}" change="clickPerson(event)"> 
</s:List> 

所以listOfPeople只是一个字符串列表...香港专业教育学院尝试添加“\ n”来这些字符串的有效补充线多的细节,但“\ n”之后的任何内容都不会显示在屏幕上,有什么想法?

感谢 菲尔

例如:


PERSON1

年龄

性别


PERSON2

年龄

性别


+0

为什么不让字符串逗号分开? – chchrist 2011-03-30 15:12:09

回答

1

我会用项目渲染器。检查出Adobe's docs开始。

例项目渲染:

<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
    borderStyle="none" backgroundColor="white" > 

    <mx:Label text="{data.name}"/> 
    <mx:Label text="{data.age}"/> 
    <mx:Label text="{data.sex}"/> 

</mx:VBox> 
0

这一个对我的作品

<fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 

      [Bindable]private var people:ArrayCollection 
      private var string:String = "test,test,test"; 

      private function init():void 
      { 
       people = new ArrayCollection(String(string).split(',')); 

      } 
     ]]> 
    </fx:Script> 

    <s:List id="list" dataProvider="{people}" /> 
+0

编辑:对不起,请看帖子 – 2011-03-30 15:54:08

1

首先,Spark List组件支持具有默认项目渲染多行的行的开箱。下面的代码工作完美:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application creationComplete="populate()" minHeight="600" minWidth="955" xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark"> 
    <fx:Script> 
    <![CDATA[ 
     import mx.collections.ArrayCollection; 
     [Bindable] 
     public var listOfPeople:ArrayCollection; 

     public function populate():void 
     { 
      var testData:String = "Test\ntest,Test\ntest\ntest"; 
      listOfPeople = new ArrayCollection(testData.split(",")); 
     } 
    ]]> 
    </fx:Script> 
    <s:List dataProvider="{listOfPeople}" horizontalCenter="0" verticalCenter="0" /> 
</s:Application> 

但是如果你想更复杂的列表中的行,你可以实现自己的项目渲染贾森指出除外有效的Flex版本。正如我从你的代码片段中看到的那样,你使用的是Flex 4.x,但Jason的示例是用于Flex 3.x.所以你需要使用the following documentation来实现自定义渲染器。

然后,您可以在自定义渲染器中放置任意数量的标签或其他控件以显示自定义数据。