Список отображает несколько строк Adobe Flex / Actionscript - PullRequest
0 голосов
/ 30 марта 2011

В настоящее время я создаю список в Adobe Flex / Actionscript для приложения поиска людей. На данный момент в списке отображается 1 строка текста:

    <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

Возраст

Пол


и т.д.

Ответы [ 3 ]

1 голос
/ 30 марта 2011

Я бы использовал средство визуализации предметов.Для начала ознакомьтесь с Документами Adobe .

Пример средства визуализации элементов:

<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>
1 голос
/ 31 марта 2011

Во-первых, компонент 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>

Но если вам нужны более сложные строки List, вы можете реализовать свой собственный рендер, как указал Джейсон, за исключением эффективной версии Flex. Как я вижу из вашего фрагмента, вы используете Flex 4.x, но пример Джейсона для Flex 3.x. Поэтому вам нужно реализовать пользовательский рендерер, используя следующую документацию .

Затем вы можете поместить любое количество меток или других элементов управления в свой пользовательский рендерер для отображения пользовательских данных.

0 голосов
/ 30 марта 2011

Этот работает для меня

<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}" />
...