繁体   English   中英

刷新List组件Flex中每个项目的itemrenderer

[英]refresh the itemrenderer of each item in the List component Flex

我的清单如下所示:

<s:List id="list2" width="100%" height="100%" dataProvider="{ recordingsShown }"
                itemRenderer="components.VideoItemRenderer2"
                selectedIndex="0" visible="false">

            <s:layout>

                <s:TileLayout id="tilelayout"
                              useVirtualLayout="true"
                              orientation="columns" 
                              columnAlign="justifyUsingWidth" rowAlign="justifyUsingHeight"
                              requestedColumnCount="3"
                              requestedRowCount="2"
                              paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5"
                              verticalGap="10" horizontalGap="10" />

            </s:layout>

</s:List>

其中会在磁贴中显示数组收集记录中包含的每个视频的名称,日期和预览图像,显示为dataprovider。 问题是,当添加新视频时,我将预览图片保存在一个文件夹中,并在一个xml文件中描述了它的节点,然后将新项目放入arraycollection中,

recordingsShown.addItemAt(newRecording,0);

它已添加到舞台上,但未显示最后添加的视频的预览图像! 如何重新绘制整个列表以显示它?

这是我的itemRenderer:

<?xml version="1.0" encoding="utf-8"?>
<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"
            width="400" height="300" autoDrawBackground="true">

<fx:Metadata>
    [Event(name="playClicked", type="flash.events.Event")]
</fx:Metadata>

<fx:Script>
    <![CDATA[
        import flash.filters.GlowFilter;

        import mx.controls.Alert;
        import mx.events.FlexEvent;
        import mx.formatters.DateFormatter;




        protected function img_rollOverHandler(evt:MouseEvent):void {
            Image(evt.currentTarget).filters = [new GlowFilter(0xf7941d)];
            Image(evt.currentTarget).alpha = 0.9;
        }

        protected function img1_rollOutHandler(evt:MouseEvent):void {
            Image(evt.currentTarget).filters = [];
            Image(evt.currentTarget).alpha = 1;
        }

        protected function playClickHandler(event:MouseEvent):void
        {

            dispatchEvent(new Event("playClicked",true,true));

        }

    ]]>
</fx:Script>

<fx:Declarations>
    <s:DateTimeFormatter id="dateTimeFormatter"
                      dateTimePattern="DD.MM.YYYY HH.NN.SS"/>
</fx:Declarations>

    <s:states>
        <s:State name="normal" />
        <s:State name="hovered" />
        <s:State name="selected" />
    </s:states>

    <s:Rect width="100%" height="100%" radiusX="5" radiusY="5">
        <s:filters>
            <s:DropShadowFilter alpha="0.32" alpha.hovered="0.5" blurX="5" blurY="5" distance="2" />
        </s:filters>
        <s:fill>
            <s:LinearGradient rotation="90">
                <s:GradientEntry color="0x323232" color.selected="black"/>
                <s:GradientEntry color="#7f7f7f" color.selected="0x333333"/>                
            </s:LinearGradient>
        </s:fill>
        <s:stroke>
            <s:SolidColorStroke color="#ffffff" color.hovered="#f7941d" color.selected="#ed7f09" caps="none" weight="2" joints="miter" miterLimit="4"/>
        </s:stroke>
    </s:Rect>

    <s:Label left="10" top="10"
             fontStyle="italic"
             fontWeight="bold"
             color="#f7941d" 
             text="{dateTimeFormatter.format(data.date)}"/>

    <s:Label left="10" top="25" 
             fontSize="16" 
             fontWeight="bold"
             color="#ffffff"
             text="{data.name}"/>       
    <s:Image id="previewImg" left="10" right="10" bottom="10" top="55" scaleMode="stretch" smooth="true"
             source="http://localhost:5080/thumbs/{data.thumb}" /> 
            <!--   source="assets/img.jpg"/> -->             

    <s:Image source="assets/play.png"
             rollOver="img_rollOverHandler(event);"
             rollOut="img1_rollOutHandler(event);" 
             x="136" y="102"
             click="playClickHandler(event)"
             complete="this.invalidateSize()"/>
</s:ItemRenderer>

我发现数据绑定和Spark Image似乎存在问题。 尝试将其添加到根标签:

 dataChange="yourImage.validateNow();

如果这样不起作用,请在dataChange中设置整个路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM