|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
изменение dataProvider в List при изменении источника
Добрый вечер. Как лучше обновлять dataProvider при изменении массива, являющегося моделью для данного списка. Варианта я вижу два:
1) при каждом изменении массива source писать list.dataProvider = new ArrayList(source); 2) не создавать новый ArrayList, а добавлять/обновлять/удалять элементы, соответствующие изменившимся; какой лучше? (для простоты кода использую первый, но не уверен, что разумно). |
|
|||||
Вы используете dataProvider как Bindable?
Если да, то делайте с ним что хотите - все должно правильно отразиться (за исключением использования в list itemRenderer - тут возможны заморочки).
__________________
In Code We Trust |
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Возражу: использование Bindable (свойство dataProvider и так можно использовать для привязки) будет решать проблему тогда, когда оно привязано к какому-то полю IList при его изменении (при изменении ссылки, а не содержимого). В моем случае есть модель, в которой есть массив (не IList). К нему нельзя привязать dataProvider. Поэтому приходится пользоваться одним из предложенных мною способов. Так что вопрос открыт: какой предпочтительнее?
|
|
|||||
а почему обязательно массив? Почему бы не использовать ArrayCollection, например, каждый из элементов которого некий объект, свойства которого тоже [Bindable] ?
|
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Потому, что это модель. Там нет конкретики того, как это будет отображаться. Поэтому наиболее абстрактно (и логично) хранить эти данные стоит в массиве. В принципе можно, конечно (я об этом уже подумывал), использовать коллекцию, но не хочется привязываться к какой-то флексовой реализации IList или писать свою.
|
|
|||||
Хм, а зачем тогда флекс ?
P.S. В ArrayCollection я тоже не вижу особой конкретики, это некое хранилище, которое рассылает события о своем изсенении. P.P.S. Ну если уж и ArrayCollection не подходит, отнаследуйтесь от Array, напишите свои события изменения этого массива (тот же самый ArrayCollection и получится) |
|
|||||
Это у вас получился Value Object, а не модель. Модель, в отличие от VO, должна сообщать о своем изменении.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Ну да, она сообщает, что в ней изменился массив данных. И обработчик события изменения изменяет вид, по первому способу:
list.dataProvider = new ArrayList(source); Цитата:
|
|
|||||
Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
Часовой пояс GMT +4, время: 19:37. |
|
« Предыдущая тема | Следующая тема » |
|
|