2011-03-30 57 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來實現自定義渲染器。

然後,您可以在自定義渲染器中放置任意數量的標籤或其他控件以顯示自定義數據。