![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
ага.... удалось выяснить следующее:
List у меня внутри TitleWindow рамером 200 px. 1. В List вывожу 5 элементов. Отображаются нормально. Ещё на 2 элемента хватило бы места (111.jpg). 2. Нажимаю на первый элемент - отображается RichEditableText с отображением категорий (222.jpg) за фоном подгружаются данные из БД. Нажимаю на второй элемент - тоже всё хорошо, данные из БД. 3. Спускаюсь вниз списка и выбираю последний элемент - отображаются категории первого элемента. Подгрузки из БД не происходит. Собственно вот он глюк. (333.jpg) Но! Если окошко сделать большего размера чтобы скролла не было и места хватало для прорисовывания каждого элемента - то глюков никаких нет. Экспериментально выяснил если высоту окна сделать -10 или +10 то глюка нет. что это? глюк? у меня подозрение что что-то в коде у меня не так. В ItemRenderer примерно следующий код: <s:Label id="labelDisplay" text="{data.label}" left="10" top="3" textAlign="start" fontWeight="bold" verticalAlign="middle" maxDisplayedLines="3"/> </s:Group> <s:BorderContainer id="bc" includeIn="selected" > <s:VGroup id="vg" width="100%" height="100%" top="0"> <s:RichEditableText id="ta0" heightInLines="{NaN}" creationComplete="ta0_creationCompleteHandler(event)" /> </s:VGroup> </s:BorderContainer> protected function ta0_creationCompleteHandler(event:FlexEvent):void { //делаю загрузку данных из БД var s:String = new String(); for (var i:Number=0;i<cr_ob_sf.lastResult.length;i++) { s += '<a id="'+cr_ob_sf.lastResult[i].P+'">'+cr_ob_sf.lastResult[i].A+'</a> ' } var cfg:Configuration = TextFlow.defaultConfiguration; var normalFmt:TextLayoutFormat = new TextLayoutFormat(cfg.defaultLinkNormalFormat); normalFmt.color = 0x0000FF; normalFmt.textDecoration = TextDecoration.UNDERLINE; var hoverFmt:TextLayoutFormat = new TextLayoutFormat(cfg.defaultLinkHoverFormat); hoverFmt.color = 0x0000FF; hoverFmt.textDecoration = TextDecoration.UNDERLINE; cfg.defaultLinkNormalFormat = normalFmt; cfg.defaultLinkHoverFormat = hoverFmt; ta0.textFlow = TextConverter.importToFlow(s, TextConverter.TEXT_FIELD_HTML_FORMAT, cfg); ta0.validateNow(); } Последний раз редактировалось billion; 18.10.2011 в 13:56. |
|
|||||
|
ItemRendererов создается ровно столько, сколько влезает. При скролинге у существующих обновляется data.
Поэтому вешать что-то отвечающее за вывод данных в creationComplete бессмысленно. override data, как сказал Астрапорт. Добавлено через 5 минут Вынесите запрос из итемРендерера, по change листа например его делайте, и только в том случае, если нет данных. Полученное пихайте в нужный элемент датапровайдера. Иначе у вас получится/получается - выбрал элемент - запрос - скролл - ответ и в итемрендерере с новыми данными появляется ранее запрошенная инфа для другого элемента.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
ага.... вот теперь понятно.... благодарю за ответ. придётся выносить все лоадеры за итемрендеры. вот только с override data не понятно.... как этот код прикрутить и куда? можно примерчик?
|
|
|||||
|
В код итемрендерера, почитайт хелп, это сеттер в него приходит объект из вашего датаПровайдера, от него и пляшите. List.selectedItem это тот же объект.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|