【问题标题】:Flex Mobile - Highlight Selected Row in Item RendererFlex Mobile - 突出显示项目渲染器中的选定行
【发布时间】:2012-09-03 13:29:54
【问题描述】:

我正在构建一个 ItemRenderer,以显示公司可能希望在建筑物上执行的工作列表。然后,用户可以单击作业以选择它并使用父视图上的添加/编辑/删除按钮。

如何在我的 s:ItemRenderer 中突出显示选定的 HGroup 以允许用户查看当前选择的作业?

<s:Scroller width="100%" height="70%">
        <s:DataGroup width="100%" height="100%" 
                     horizontalCenter="0" verticalCenter="0" 
                     dataProvider="{Session.EXISTING_JOBS}"
                     >
            <s:layout >
                <s:VerticalLayout />                
            </s:layout>



            <s:itemRenderer>
                <fx:Component>
                    <s:ItemRenderer verticalCenter="0" horizontalCenter="0" width="100%">                                   

                        <fx:Script>
                            <![CDATA[


                                protected function jobSelect_clickHandler(event:MouseEvent):void
                                {
                                    // highlight the HGroup here
                                    if(this.selected == true){
                                        jobRow.setStyle('contentBackgroundColor',0x000000);
                                    } else {
                                        jobRow.setStyle('contentBackgroundColor',0xFFFFFF);
                                    }                                       
                                }
                            ]]>
                        </fx:Script>


                        <s:states>
                            <s:State name="normal"/>                            
                        </s:states>
                        <s:HGroup id="jobRow"
                            width="100%" height="50" 
                                  verticalAlign="middle"
                                  click="jobSelect_clickHandler(event)" >                               
                            <s:Label text="{data.id}" 
                                     width="15%" height="50" 
                                     verticalAlign="middle" 
                                     verticalCenter="0"/>       
                            <s:Label text="{data.company}" 
                                     width="35%" height="50"
                                     verticalAlign="middle"
                                     verticalCenter="0"/>
                            <s:Label text="{data.building}" 
                                     width="35%" height="50" 
                                     verticalAlign="middle"
                                     verticalCenter="0"/>   
                            <s:Label text="{data.assets}"
                                     width="15%" height="50"  
                                     verticalAlign="middle"
                                     verticalCenter="0"/>       
                        </s:HGroup>
                    </s:ItemRenderer>
                </fx:Component>
            </s:itemRenderer>

        </s:DataGroup>
    </s:Scroller>

【问题讨论】:

    标签: apache-flex mobile itemrenderer


    【解决方案1】:

    假设您在列表中使用 itemRenderer;默认情况下,List 类已经这样做了。您可以通过设置selectionColor style 来更改该值。

    如果你真的想改变 HGroup 的值,你可以使用样式contentBackgroundColor。您可以通过访问 itemRenderer 实例的 selected 属性来判断您当前的渲染器是否是选定的项目。

        protected function selectJob_clickHandler(event:MouseEvent):void
        {
            // highlight the HGroup here
            if(this.selected == true){
              hgroupID.setStyle('contentBackgroundColor',0x000000);
            } else {
              hgroupID.setStyle('contentBackgroundColor',0xFFFFFF);
            }
        }
    

    别忘了给 HGroup 添加一个 ID:

    <s:HGroup id="hgroupID" 
              width="100%" height="50" 
              verticalAlign="middle"
              click="selectJob_clickHandler(event)" > 
    

    【讨论】:

    • 这没有效果。设置项目渲染器时我错过了什么吗?我现在将它移到同一个 mxml 文件中,以便更轻松地操作数据。新代码已更新。
    • 我只需要在突出显示组之前将 'selected' 设置为 true。关于如何同时取消选择所有其他人的任何想法,因此只能选择一个?
    • 您应该确保您的 itemRenderer 响应 dataChange 事件,以便根据列表选择更新其状态。当一个项目被选中和一个项目未被选中时,它应该刷新它的状态。
    • 我有:
    • 如果使用 dataChange 会阻止选择强制选择所有内容,那么渲染器代码会出现问题,该代码会更改样式。我不确定我是否有机会深入研究。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2013-06-06
    • 2012-08-21
    • 1970-01-01
    • 2014-12-21
    相关资源
    最近更新 更多