PDA

Просмотр полной версии : Неверное отображение данных в List при смене dataProvider.


Art_133
28.07.2011, 18:35
Привет.
Столкнулся с проблемой. Информация в компоненте List отображается некорректно, если dataPovider меняется.

Имеем два ArrayCollection, которые являются источником элементов для List:

<s:ArrayCollection id="galleryData">
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
<fx:String>First DataProvider</fx:String>
</s:ArrayCollection>

<s:ArrayCollection id="galleryData2">
<fx:String>Second DataProvider</fx:String>
<fx:String>Second DataProvider</fx:String>
<fx:String>Second DataProvider</fx:String>
</s:ArrayCollection>

Есть компонент List, свойству dataProvider которого, по нажатию на кнопки, передаём galleryData или galleryData2:

<s:List
id="galleryList"
width="350" height="100">
<s:layout>
<s:TileLayout requestedColumnCount="3" horizontalGap="19" verticalGap="16" />
</s:layout>
</s:List>

Кнопки:

<s:Group x="350">
<s:layout>
<s:HorizontalLayout />
</s:layout>

<s:Button label="1" click="{galleryList.dataProvider = galleryData; }" />
<s:Button label="2" click="{galleryList.dataProvider = galleryData2; }" />
</s:Group>


Описание ошибки:
Когда мы по очереди меняем dataProvider (путём поочередного нажатия на кнопки) информация в List обновляется, но отображается не полностью, а видны только первые 3 элемента из первого ArrayCollection(galleryData).
Посмотреть можно по ссылке (http://dev.convergentcmg.com/test/listAndDataprovider/Test.html).
Как добиться корректного поведения List при смене dataProvider?
Спасибо за помощь.

alatar
28.07.2011, 20:11
Видимо глючит List, если не хотите разбираться где именно и не используется весь функционал List, можете использовать DataGroup.
<s:Scroller width="350" height="100">
<s:DataGroup id="galleryList" itemRenderer="spark.skins.spark.DefaultItemRenderer">
<s:layout>
<s:TileLayout requestedColumnCount="3" horizontalGap="19" verticalGap="16" />
</s:layout>
</s:DataGroup>
</s:Scroller>

Добавлено через 9 минут
В SDK 4.5.1 этот баг починили, если есть возможность сменить SDK, переходите на 4.5.1.

Art_133
29.07.2011, 15:27
Спасибо, обновил sdk и баг устранен.