Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   LIST c вложеностью как у TREE (http://www.flasher.ru/forum/showthread.php?t=153204)

stanley 30.03.2011 11:50

LIST c вложеностью как у TREE
 
Вложений: 2
Есть лист у которого свой itemRenderer
Код AS3:

<s:List id="folders" fontSize="14" textAlign="left"
width="100%" height="100%
skinClass="spark.skins.spark.ListSkin"
itemRenderer="folderItem">                       
</s:List>

заполняю его с запроса JSON
Код AS3:

<mx:ArrayList id="folderList" />

Код AS3:

var obj:Object = JSON.decode(e.target.data);
if (obj)
{
  folderList.source =obj.userFolderTree[0].__children[4].accept;
  folders.dataProvider = folderList;
}

собственно сам itemRenderer
Код AS3:

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                                xmlns:s="library://ns.adobe.com/flex/spark"
                                xmlns:mx="library://ns.adobe.com/flex/mx"
                                autoDrawBackground="false">
        <s:states>
                <s:State name="normal" />
                <s:State name="hovered" />
                <s:State name="selected" />
        </s:states>       
        <s:Rect id="fill" left="1" right="1" top="1" bottom="1"
                  radiusX="8" radiusY="8">
                <s:fill>
                        <s:SolidColor color="0x444444" alpha="1"
                                          color.selected="0x00CCFF"
                                          color.hovered="0xFFFFFF"
                                          color.normal="0x444444" />
                </s:fill>
        </s:Rect>       
        <s:Label text="{data}" top="1" bottom="1" left="10" right="1"
                        color="0xFFFFFF"
                        color.selected="0xFFFFFF"
                        color.hovered="0x000000"
                        color.normal="0xFFFFFF"
                        textAlign.selected="left"
                        textAlign.hovered="left"
                        textAlign.normal="left" 
                        verticalAlign.selected="middle"
                        verticalAlign.hovered="middle"
                        verticalAlign.normal="middle"/>       
</s:ItemRenderer>

итого получаю вид
Вложение 26338
а нужен вид с имитацией дерева - т.е нужны отступы у детей
Вложение 26339

Не пойму как проверять у элемента уровень вложенности
можно делать какие то операции с {data}
и как потом задавать координатой Х?

saprahan 30.03.2011 12:02

s:List предназначен для отображения плоских данных и рендериться будут только айтемы первого уровня

spacecadet 30.03.2011 16:14

Первое, что приходит в голову - доработать itemRenderer и ваш источник данных. Сделать itemRenderer в виде VBox, на первое место поместить какой-нибудь Spacer, а на второе - сам элемент, в котором отображается надпись. В дата-провайдере (в каждом элементе) задать дополнительный параметр , отвечающий за глубину вложения (для примера назовем его "param"), и ширину Spacer'а в itemRenderer'е поставить в Bindable-зависимость от этого параметра:
Код AS3:

<mx:Spacer width="{data.param * 10}"/>

А кстати, почему сразу не использовать для этих целей Tree ?

stanley 30.03.2011 16:39

спс.
ну делал списком - потом появилась вложенность - решил доделать список, но уже задумываюсь об переделке на дерево

spacecadet 30.03.2011 16:50

Цитата:

Сообщение от stanley (Сообщение 985087)
спс.
ну делал списком - потом появилась вложенность - решил доделать список, но уже задумываюсь об переделке на дерево

Понятно, у самого костылей в проектах примерно over 9000. А дерево оно хорошее, не злое. Были у нас, конечно, с ним по началу разногласия, но в целом - рекомендую. :)

PS: кстати, мне одному кажется, что сервер не перевелся на летнее время?

stanley 30.03.2011 22:33

нет щас у нас часовой пояс стал +4


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

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