Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.01.2010, 01:27
Fergus вне форума Посмотреть профиль Отправить личное сообщение для Fergus Найти все сообщения от Fergus
  № 1  
Ответить с цитированием
Fergus

Регистрация: Oct 2008
Адрес: Moscow
Сообщений: 130
Отправить сообщение для Fergus с помощью ICQ
По умолчанию Показать первые n элементов из ListCollectionView

Задача, казалось бы, несложная.
Имеется ArrayCollection (ну или люой IList), на основе которого построен ListCollectionView и отсортирован.
Требуется, чтобы в ListCollectionView содержались только первые n элементов, причем первые именно с учетом сортировки.
Важно, чтобы этот список первых n элементов обновлялся по биндинг-событиям исходного ArrayCollection.

Никаких штатных методов для этого, я не нашел, что меня сильно удивляет - ведь задача довольно тривиальная. Может плохо ищу? Или не там...

Заранее спасибо.
__________________
Jedem das Seine

Старый 13.01.2010, 02:10
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
>> ну или любой IList
А их кроме ArrayCollection никаких других и не существует только всякие кривые наследники ArrayCollection. Боюсь, что именно желаемым способом задача не решается, а если и решается, то с очень большими накладными затратами - легче будет подписаться на датаЕвент у нужной коллекции и выбрать из нее нужное количество элементов. А еще лучше - не использовать ArrayCollection - на редкость даже для флексового фреймворка криво написаный код... Я вообще теряюсь в догадках почему он иногда работает

ЗЫ. ICollectionView не имплементится по-нормальному, частично можно заимплементить, но только через прокси, или от Array наследоваться, что, вобщем-то шило на мыло получися... так, разве что чуть подчистить + головной боли на несколько дней.
__________________
Hell is the possibility of sanity

Старый 13.01.2010, 02:21
Fergus вне форума Посмотреть профиль Отправить личное сообщение для Fergus Найти все сообщения от Fergus
  № 3  
Ответить с цитированием
Fergus

Регистрация: Oct 2008
Адрес: Moscow
Сообщений: 130
Отправить сообщение для Fergus с помощью ICQ
Цитата:
Сообщение от wvxvw Посмотреть сообщение
легче будет подписаться на датаЕвент у нужной коллекции и выбрать из нее нужное количество элементов.
Простите, не очень понял Вашу мысль. Нельзя ли подробнее? Обращаю Ваше внимание, что важно отобрать n первых элементов именно в отсортированном списке.
__________________
Jedem das Seine

Старый 13.01.2010, 02:44
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я бы и сортировки в ArrayCollection не делал (сортировал бы сорс + рефреш коллекции) - я понимаю, что по-уму это не красиво, но по затратам - так на так получится... В самом худшем случае - сделал клоне (из сорса), его штатными методами отсортировал, выбрал нужное количество элементов и переназначил датапровайдера. Тут, конечно много зависит от того на сколько объемистый список, но если в пределах сотни, и рендереры используются повторно, то так может даже и быстрее будет.
__________________
Hell is the possibility of sanity

Старый 13.01.2010, 12:01
Fergus вне форума Посмотреть профиль Отправить личное сообщение для Fergus Найти все сообщения от Fergus
  № 5  
Ответить с цитированием
Fergus

Регистрация: Oct 2008
Адрес: Moscow
Сообщений: 130
Отправить сообщение для Fergus с помощью ICQ
Нет, ArrayCollection трогать вообще нельзя. Сортируется ListCollectionView.
Если создать клона, то прощай биндинг.
__________________
Jedem das Seine

Старый 13.01.2010, 12:48
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну как бы вам сказать... вы держитесь за вещи, которые сами по себе внутри гнилые... биндинг - это тоже то еще Г... Как бы сами понимаете, что первым приходящим в голову решением было бы сказать вам "да возьмите ArrayCollection, отнаследуйтесь и добавьте недостающий функционал", но у меня просто язык на такое не повернется
Используйте нормальные слушатели вместо биндинга и будет вам счастье... Фреймворк вообще сделан для того, чтобы быстро решить тривиальную задачу, но если задача становится для него не тривиальной, то смысла его использовать для решения этой самой задачи нет... Как бы, если чесно, я вообще затрудняюсь найти ситуацию в которой его было бы умесно использовать за исключением прототипов или каких-нибудь поделок на скорую руку, где ни объем ни производительность не имеют значения. Ну или плата за работу такая, что скорость исполнения важнее качества

EDIT: Вот, к примеру ваша же ситуация с клонированием коллекции, ну а как вы думаете, что происходит когда вы коллекцию сортируете (в смысле ее вид)? - Чудес же не бывает, и коллекция точно так же клонирует свой сорс, сортирует его и рефрешит вид. Разница в том, что она это делает через какие-то десятки try-catch в самых ненужных местах, при чем сама же еррорит, сама же ловит, вобщем - мрак в стиле доисторической Java на всю катушку. Вы просто сходу так же плохо не напишите, для этого талант нужен и багаж знаний из других ЯП...
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 13.01.2010 в 13:07.
Создать новую тему Ответ Часовой пояс GMT +4, время: 10:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:45.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.