Как добавить настраиваемые свойства элемента списка искры Flex 4

Я пытаюсь сделать простое флеш-приложение, обеспечивающее интерфейс для сдачи тестов в качестве школьного задания. Одно из требований - использовать XML-файл в качестве источника данных.
Теперь, когда компонент List привязан к XML-файлу с вопросами, состоящими из данных, таких как текст вопроса, тип вопроса (т. Е. Одиночный выбор, множественный выбор, open, image и т. д.) и возможные ответы (где применимо), мне было интересно, могу ли я добавить дополнительные данные (и как это сделать наилучшим образом) к каждому вопросу после их передачи в компонент List.
Этим я пытаюсь достичь двух основных целей: во-первых, отметить вопросы, на которые уже дан ответ, как с таким кодом в классе ItemRenderer:

<s:Label color="{data.color}" text="{data.label}"/>

где data.color будет устанавливаться всякий раз, когда пользователь дает ответ на вопрос.
Во-вторых, пока я думал о такой возможности, как о отличном способе хранить ответы, данные на определенные вопросы. В этом случае классом объекта ответа был бы объект, поскольку должно быть много типов вопросов (где ответ также может быть, например, растровым изображением).

Это вопрос обоих < em> как это сделать, и если это вообще кажется хорошей идеей (а если нет, есть ли способ получше?), потому что я новичок в Flash Builder и Flex, а я нет действительно привык ко всем возможностям и лучшим практикам.

Спасибо!


person maik3l    schedule 03.01.2011    source источник


Ответы (2)


Я предпочитаю использовать что-то вроде модели презентации для каждого элемента в списке.

Идея состоит в том, что вы составляете класс с данными XML (данными модели) И свойствами, которые больше подходят для представления. Другими словами, вы сопоставляете данные XML с типом более высокого уровня и помещаете его в список. Что-то вроде этого, где label делегирует модель, а color - это то, что вы добавляете на свой уровень пользовательского интерфейса.

public class QuestionPM {
    private _model:XML;
    public function QuestionPM(model:XML) {
        _model = model;
    }

    public function get label():String { return _model.label; }
    public var color:String;
}
person Brian Genisio    schedule 03.01.2011
comment
Большое спасибо, Брайан и Патрик, вы очень помогли :) - person maik3l; 03.01.2011

Считается лучшей практикой назначать результаты ваших XML-данных в ValueObjects, вы можете либо добавить дополнительные данные непосредственно в класс ValueObject, либо использовать другой класс, чтобы специально добавить логику к вашим VO, чтобы не смешивать логику и данные в одном классе .

Если вы не знакомы с Flex / FlashBuilder, ознакомьтесь со следующим руководством, здесь ссылка на ВО
http://www.adobe.com/devnet/flex/videotraining/упражнения/ex2_08.html#b

person PatrickS    schedule 03.01.2011