代码之家  ›  专栏  ›  技术社区  ›  Amitd

使用itemrenderer显示flex progressbar的列表

  •  1
  • Amitd  · 技术社区  · 15 年前

    我想创建一个进度条列表并相应地更新列表。

     <mx:Array id="arr">
            <mx:Object label="Group One" min="0" max="200" currentValue="60" />
            <mx:Object label="Group Two" min="0" max="300" currentValue="50" />
     </mx:Array>
    

    数组对象中的值表示组名、最小值、最大值和当前值 对于组(在progressbar中使用)。

    我把名单用在了“mx.controls.ProgressBar“作为

    <mx:List width="100%" dataProvider="{arr}"
            itemRenderer="mx.controls.ProgressBar"/>
    

    现在我需要的是 数组“arr”字段更改我要更新progressbar“ 进步 当前值

    我怎么能这么做呢。

    谢谢大家

    3 回复  |  直到 15 年前
        1
  •  1
  •   alxx    15 年前

    我猜你的进度条什么也没显示,因为这一切都错了。Item renderer是一个通过 function set data(value:Object):void . 要在ProgressBar中获取值,可以对其进行子类化,添加数据函数(getter和setter)并从中设置属性—这个类将是项呈现器。

        2
  •  1
  •   Kumsal Obuz    15 年前

    诀窍是将progressbar的模式设置为手动,因为您不会自动监听下载数据的任何进度。您需要设置一个值,以便进度条可以自我更新,因此手动是最佳选择。此外,请查看以下内容:

    <s:Application minHeight="600" minWidth="955" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark">
    <s:layout>
        <s:HorizontalLayout/>
    </s:layout>
    <fx:Declarations>
        <s:ArrayCollection id="arr">
            <fx:Object label="Group One" currentValue="20" max="200" min="0"/>
            <fx:Object label="Group Two" currentValue="50" max="300" min="0"/>
        </s:ArrayCollection>
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            private function updateArr():void {
                arr.getItemAt(0).currentValue = ns.value;
            }
        ]]>
    </fx:Script>
    <s:List dataProvider="{arr}"  itemRenderer="ProgressBarWithCurrentValue"/>
    <s:NumericStepper id="ns" maximum="200" minimum="0" stepSize="10" value="20" change="updateArr()"/></s:Application>
    

    <s:ItemRenderer autoDrawBackground="true" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark">
    <fx:Script>
        <![CDATA[
            private function updateCurrentValue():void {
                pb.setProgress(data.currentValue, data.max);
            }
        ]]>
    </fx:Script>
    <mx:ProgressBar id="pb" maximum="{data.max}" minimum="{data.min}" mode="manual" updateComplete="updateCurrentValue()"/></s:ItemRenderer>
    

    当您简单地将itemrenderer设置为progressbar时,它会自动尝试查找数据源,但在您的情况下,您将输入并更新自己。所以,您可能需要一个itemdrenderer来执行一些操作。

        3
  •  0
  •   Amitd    15 年前

    大家好
    谢谢你的回答。。
    在谷歌搜索了更多之后,我发现了一些和我需要的相似的东西
    http://www.flex-blog.com/progressbar-in-datagrid-example/


    1使用ItemRenderer显示DataGrid中的ProgressBar。


    4确保ArrayCollection在项目的每个进度上都已更新

    推荐文章