#list #apache-flex #slideshow #itemrenderer
#Список #apache-flex #слайд-шоу #itemrenderer
Вопрос:
Мне нужно создать слайд-шоу, используя данные, полученные из другого представления.
Я вызываю просмотр слайд-шоу следующим образом:
<s:List id = "list" dataProvider = "{actions}"
change = "navigator.pushView (DetailsProduct, list.selectedItem) ">
<s:itemRenderer>
<fx:Component>
<s:MobileIconItemRenderer
labelField = "title"
messageField = "description"
decoratorClass = "{data.icon}">
</s:MobileIconItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
Я думаю, проблема во времени отправки параметра, потому что я передаю выбранный элемент и должен передать весь список.
И другая проблема заключается в представлении, я могу видеть объект, полученный вне списка, но не внутри него.
С помощью этого кода объект появляется, но кнопки «Назад» и «Вперед» не работают.
<s:List id = "myList"
dataProvider = "{actions}">
</s:List>
<s:Image source="{data.icon}"/>
<s:Label text="{data.title}"/>
<s:Label text="{data.description}"/>
<s:HGroup>
<s:Button label="Forward" click="imgForward(event)"/>
<s:Button label="Back" click="imgBack(event)"/>
</s:hgroup>
И этот код ничего не показывает, даже объект вызывается таким же образом.
<s:List id = "myList"
dataProvider = "{actions}">
<s:itemRenderer>
<fx:Component>
<s:ItemRenderer>
<s:Image source="{data.icon}"/>
<s:Label text="{data.title}"/>
<s:Label text="{data.description}"/>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
<s:HGroup>
<s:Button label="Forward" click="imgForward(event)"/>
<s:Button label="Back" click="imgBack(event)"/>
</s:hgroup>
Комментарии:
1. Для дальнейшего использования; кнопка в редакторе с «фигурными скобками» отформатирует код для удобства отображения; поэтому вам не нужно вставлять пробелы в имена тегов.
Ответ №1:
Я действительно не понимаю, чего вы пытаетесь достичь. Свойство data определено в интерфейсе IDataRenderer.
Когда компонент используется в качестве средства визуализации, элемент данных, который представляет экземпляр компонента, передается в средство визуализации с использованием свойства data.
Вы не определили количественно, что означает «работает или «не работает», поэтому я не уверен, каково ваше желаемое поведение, и почему одно неверно, а другое нет. В вашем первом примере я бы не ожидал, что свойство data будет иметь какое-либо значение:
<s:List id="myList"
creationComplete="criaLista(event)"
dataProvider="{actions}">
</s:List>
<s:Image source="{data.icon}"/>
<s:Label text="{data.title}"/>
<s:Label text="{data.description}"/>
Я не уверен, что содержит dataProvider, но если он содержит объекты, я бы ожидал, что что-то будет отображаться в списке. Я бы ожидал, что изображение и метки не будут отображать визуальные элементы, потому что свойство data, скорее всего, равно null. Если вы хотите сослаться на элемент, выбранный в списке, вместо доступа к данным, вы могли бы получить доступ к чему-то вроде этого:
<s:Image source="{myList.selectedItem.icon}"/>
<s:Label text="{myList.selectedItem.title}"/>
<s:Label text="{myList.selectedItem.description}"/>
Он использует свойство SelectedItem из экземпляра списка для изменения отображаемых элементов.
В вашем втором примере, где вы создаете ItemRenderer, я бы ожидал, что это сработает:
<s:List id="myList"
creationComplete="criaLista(event)"
dataProvider="{actions}">
<s:itemRenderer>
<fx:Component>
<s:ItemRenderer>
<s:Image source="{data.icon}"/>
<s:Label text="{data.title}"/>
<s:Label text="{data.description}"/>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
Однако ItemRenderer ничего не делает для позиционирования изображения или двух меток, поэтому я бы ожидал, что они будут наложены друг на друга, что, вероятно, нежелательное поведение. Вы можете задать значения X и Y для их изменения.
Если вы хотите подробнее рассказать о конкретных проблемах; почему ваш первый образец «работает», а второй нет, пожалуйста, сделайте это.
Комментарии:
1. @www.Flextras.com 1, хорошая обложка. @Leticia существует конфликт в именовании переменной «data», это проблема для понимания, что вы пытаетесь сделать.
2. Спасибо, что ответили мне. Что я пытаюсь сделать, так это: у меня есть список с несколькими элементами. Когда я нажимаю на него, чтобы показать слайд-шоу с подробной информацией об этом элементе, где я могу перейти к подробной информации о следующем элементе, или вернуть детали элемента выше. В первом коде я могу просмотреть эти сведения, но их нет в списке, поэтому я не могу перейти к деталям следующего раздела или вернуться к деталям элемента выше. Во втором коде я пытаюсь отобразить элемент в списке, но ничего не отображается. Я не знаю, как он извлекает ссылки, когда находится вне списка, и не может сделать то же самое, когда он находится внутри.
3. @Leticia Предоставьте нам полный исполняемый пример; чтобы мы могли взять код и попытаться его запустить.
4. @www.Flextras.com Как я могу отправить это для вас? Извините за мое объяснение, я не очень хорошо говорю по-английски.
5. @Leticia Отредактируйте свой первоначальный вопрос и опубликуйте код, а также связанные файлы. В качестве альтернативы (если ваш код компилируется) вы могли бы опубликовать сборку релиза с исходным кодом из Flash Builder и опубликовать ее где-нибудь; затем отредактируйте свой исходный пост, чтобы включить ссылку на этот проект.