您的位置:首页 > 数据库 > Oracle

Oracle计算时间差表达式

2010-12-09 12:53 211 查看
http://blog.csdn.net/sevennhe/article/details/6123361

     昨晚看了flex4中项目渲染器itemRenderer的知识,今天自己动手写一个,增强记忆,做一个简单类似 网易视频 http://v.163.com/video/2011/1/1/6/V6ORP1516.html#ld=V5NV96K0F   "纵横天下"版块里的那个貌似是用List控件做的东东。

    打开 flash builder ,建一个名为 List 的项目,主文件 List.mxml,建一个类型为
ArrayCollection 的变量 datas,变量中的每一组值都保存了一个图片和对应标题的信息。建一个 List控件,属性
dataProvider 绑定之前建的变量datas。属性 itemRenderer
的值可以是系统现有的两个渲染器(DefaultItemRenderer和DefaultComplexItemRenderer)或者是自定义的渲染
器,值得一提的是,DefaultItemRenderer
只能显示一些简单的东西,例如:字符串,DefaultComplexItemRenderer 只能显示一些UI控件。也就是说不可以同时显示
字符串和图片。这时,可以使用 属性 itemRendererFunction值等于一个函数,在函数中对字符串和图片进行判断,然后分别返回对应的
渲染器(DefaultItemRenderer OR DefaultComplexItemRenderer)就可以了,如下:

view plain

protected
 function itemRendererFunction(item:Object):ClassFactory  

{  

    return
 item is String ?   

           new
 ClassFactory(DefaultItemRenderer) :  

           new
 ClassFactory(DefaultComplexItemRenderer);  

}  

渲染器每次循环都会调用这个函数,函数参数 item 里面保存着每次迭代的当前元素,我的变量datas里面保存的都是字符串的信息,所以这个用不着,只是提一下。

     另一种方法是使用自定义的渲染器,在List控件里面加入如下的代码:

view plain

<
s:itemRenderer
>
  

    <
fx:Component
>
  

        <
s:ItemRenderer
>
  

            <
s:layout
>
  

                <
s:VerticalLayout
 
horizontalAlign
=
"center"
   

                                  verticalAlign
=
"middle"
/>
  

            </
s:layout
>
  

            <
s:Label
 
text
=
"{data.name}"
 
maxWidth
=
"100"
/>
  

            <
mx:Image
 
source
=
"{data.image}"
 
width
=
"100"
 
height
=
"100"
/>
  

        </
s:ItemRenderer
>
  

    </
fx:Component
>
  

</
s:itemRenderer
>
  

上面的代码在List控件里设置了 itemRenderer 属性,属性的值为一个 ItemRenderer 的实例,实例里面包含了
Label 和 Image 两个控件,在ItemRenderer里面的 data 变量,保存着每次迭代的当前元素,设置 Label 的属性
text 等于 data.name , Image 的属性 source 等于 data.image 。从而设置了每个元素的
标题和图片,以下是全部的代码:

view plain

<?xml version=
"1.0"
 encoding=
"utf-8"
?>  

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
   

               xmlns:s="library://ns.adobe.com/flex/spark"
   

               xmlns:mx="library://ns.adobe.com/flex/mx"
 minWidth=
"955"
 minHeight=
"600"
  

               creationComplete="initApp()"
>  

    <s:layout>  

        <s:BasicLayout/>  

    </s:layout>  

    <fx:Declarations>  

        <!-- 将非可视元素(例如服务、值对象)放在此处 -->  

    </fx:Declarations>  

    <fx:Script>  

        <![CDATA[  

            import mx.collections.ArrayCollection;  

              

            import spark.skins.spark.DefaultComplexItemRenderer;  

            import spark.skins.spark.DefaultItemRenderer;  

              

            [Bindable]  

            protected
 var datas:ArrayCollection;  

              

            private
 function initApp():
void
  

            {  

                datas = new
 ArrayCollection([  

                    {name: "aa"
, image: 
"http://localhost/images/1.jpg"
},  

                    {name: "bb"
, image: 
"http://localhost/images/2.jpg"
},  

                    {name: "cc"
, image: 
"http://localhost/images/3.jpg"
},  

                    {name: "dd"
, image: 
"http://localhost/images/4.jpg"
},  

                    {name: "ee"
, image: 
"http://localhost/images/5.jpg"
},  

                    {name: "ff"
, image: 
"http://localhost/images/6.png"
}  

                ]);  

            }  

        ]]>  

    </fx:Script>  

    <s:Group x="50"
 y=
"50"
>  

        <s:List dataProvider="{datas}"
  

                height="400"
>  

            <s:layout>  

                <s:VerticalLayout paddingBottom="10"
   

                                  paddingLeft="10"
   

                                  paddingRight="10"
  

                                  paddingTop="10"
/>  

            </s:layout>  

            <s:itemRenderer>  

                <fx:Component>  

                    <s:ItemRenderer>  

                        <s:layout>  

                            <s:VerticalLayout horizontalAlign="center"
   

                                              verticalAlign="middle"
/>  

                        </s:layout>  

                        <s:Label text="{data.name}"
/>  

                        <mx:Image source="{data.image}"
 width=
"100"
 height=
"100"
/>  

                    </s:ItemRenderer>  

                </fx:Component>  

            </s:itemRenderer>  

        </s:List>  

    </s:Group>  

</s:Application>  

 

 执行后的效果图:



代码算是基本完成了,但是想想...,如果其它页面也有需要列出类似这种List,是不是需要复制上面的自定义的渲染器那段代码。所以,应该考虑代
码重用的问题,把自定义的渲染器做成一个自定义的组件,新建一个基于
spark.components.supportClasses.ItemRenderer
的mxml组件文件ListItemRenderer.mxml,把代码:

view plain

<
s:layout
>
  

        <
s:VerticalLayout
 
horizontalAlign
=
"center"
   

                          verticalAlign
=
"middle"
/>
  

</
s:layout
>
  

<
s:Label
 
text
=
"{data.name}"
 
maxWidth
=
"100"
/>
  

<
mx:Image
 
source
=
"{data.image}"
 
width
=
"100"
 
height
=
"100"
/>
  

从List.mxml文件里面剪切到新建的ListItemRenderer.mxml文件,

view plain

<?
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"
>
  

    <
fx:Declarations
>
  

        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  

    </
fx:Declarations
>
  

    <
s:layout
>
  

        <
s:VerticalLayout
 
horizontalAlign
=
"center"
   

                          verticalAlign
=
"middle"
/>
  

    </
s:layout
>
  

    <
s:Label
 
text
=
"{data.name}"
 
maxWidth
=
"100"
/>
  

    <
mx:Image
 
source
=
"{data.image}"
 
width
=
"100"
 
height
=
"100"
/>
  

</
s:ItemRenderer
>
  

修改List.mxml文件里的List控件代码如下:

view plain

<
s:List
 
dataProvider
=
"{datas}"
  

        height
=
"400"
  

        itemRenderer
=
"components.ListItemRenderer"
>
  

    <
s:layout
>
  

        <
s:VerticalLayout
 
paddingBottom
=
"10"
   

                          paddingLeft
=
"10"
   

                          paddingRight
=
"10"
  

                          paddingTop
=
"10"
/>
  

    </
s:layout
>
  

</
s:List
>
  

设置List 的属性 itemRenderer 等于自定义的渲染器,执行List.mxml文件,显示结果和之前的一样。 = =!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: