![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Задача, казалось бы, несложная.
Имеется ArrayCollection (ну или люой IList), на основе которого построен ListCollectionView и отсортирован. Требуется, чтобы в ListCollectionView содержались только первые n элементов, причем первые именно с учетом сортировки. Важно, чтобы этот список первых n элементов обновлялся по биндинг-событиям исходного ArrayCollection. Никаких штатных методов для этого, я не нашел, что меня сильно удивляет - ведь задача довольно тривиальная. Может плохо ищу? Или не там... Заранее спасибо.
__________________
Jedem das Seine |
|
|||||
|
Modus ponens
|
>> ну или любой IList
А их кроме ArrayCollection никаких других и не существует только всякие кривые наследники ArrayCollection. Боюсь, что именно желаемым способом задача не решается, а если и решается, то с очень большими накладными затратами - легче будет подписаться на датаЕвент у нужной коллекции и выбрать из нее нужное количество элементов. А еще лучше - не использовать ArrayCollection - на редкость даже для флексового фреймворка криво написаный код... Я вообще теряюсь в догадках почему он иногда работает ![]() ЗЫ. ICollectionView не имплементится по-нормальному, частично можно заимплементить, но только через прокси, или от Array наследоваться, что, вобщем-то шило на мыло получися... так, разве что чуть подчистить + головной боли на несколько дней.
__________________
Hell is the possibility of sanity |
|
|||||
|
Простите, не очень понял Вашу мысль. Нельзя ли подробнее? Обращаю Ваше внимание, что важно отобрать n первых элементов именно в отсортированном списке.
__________________
Jedem das Seine |
|
|||||
|
Modus ponens
|
Я бы и сортировки в ArrayCollection не делал (сортировал бы сорс + рефреш коллекции) - я понимаю, что по-уму это не красиво, но по затратам - так на так получится... В самом худшем случае - сделал клоне (из сорса), его штатными методами отсортировал, выбрал нужное количество элементов и переназначил датапровайдера. Тут, конечно много зависит от того на сколько объемистый список, но если в пределах сотни, и рендереры используются повторно, то так может даже и быстрее будет.
__________________
Hell is the possibility of sanity |
|
|||||
|
Нет, ArrayCollection трогать вообще нельзя. Сортируется ListCollectionView.
Если создать клона, то прощай биндинг.
__________________
Jedem das Seine |
|
|||||
|
Modus ponens
|
Ну как бы вам сказать... вы держитесь за вещи, которые сами по себе внутри гнилые... биндинг - это тоже то еще Г... Как бы сами понимаете, что первым приходящим в голову решением было бы сказать вам "да возьмите ArrayCollection, отнаследуйтесь и добавьте недостающий функционал", но у меня просто язык на такое не повернется
![]() Используйте нормальные слушатели вместо биндинга и будет вам счастье... Фреймворк вообще сделан для того, чтобы быстро решить тривиальную задачу, но если задача становится для него не тривиальной, то смысла его использовать для решения этой самой задачи нет... Как бы, если чесно, я вообще затрудняюсь найти ситуацию в которой его было бы умесно использовать за исключением прототипов или каких-нибудь поделок на скорую руку, где ни объем ни производительность не имеют значения. Ну или плата за работу такая, что скорость исполнения важнее качества ![]() EDIT: Вот, к примеру ваша же ситуация с клонированием коллекции, ну а как вы думаете, что происходит когда вы коллекцию сортируете (в смысле ее вид)? - Чудес же не бывает, и коллекция точно так же клонирует свой сорс, сортирует его и рефрешит вид. Разница в том, что она это делает через какие-то десятки try-catch в самых ненужных местах, при чем сама же еррорит, сама же ловит, вобщем - мрак в стиле доисторической Java на всю катушку. Вы просто сходу так же плохо не напишите, для этого талант нужен и багаж знаний из других ЯП...
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 13.01.2010 в 13:07. |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|