开发者

Add Array data to variable

开发者 https://www.devze.com 2023-04-12 12:16 出处:网络
I have a app that currently gets event data from facebook and displays this into a list <s:List id=\"eventsDataGrid\" width=\"100%\" height=\"100%\" dataProvider=\"{facebookEvents}\">

I have a app that currently gets event data from facebook and displays this into a list

<s:List id="eventsDataGrid" width="100%" height="100%" dataProvider="{facebookEvents}">
        <s:itemRenderer>
            <fx:Component>
                <s:ItemRenderer>
                    <fx:Script>
                        <![CDATA[
        开发者_开发技巧                    import com.facebook.graph.utils.FacebookDataUtils;
                            private function time2DateStr(time:String):String {
                                return FacebookDataUtils.stringToDate(time).toLocaleString();
                            }

                        ]]>
                    </fx:Script>
                    <s:HGroup paddingBottom="10" paddingTop="10">
                        <s:Image source="{data.pic}"/>
                        <s:VGroup width="100%">
                            <s:Label text="{data.name}" fontWeight="bold" width="100%"/>
                            <s:Label text="Where: {data.location}" id="locationtxt"/>
                            <s:Label text="When: {time2DateStr(data.start_time)}"/>

                        </s:VGroup>
                    </s:HGroup>
                </s:ItemRenderer>
            </fx:Component>
        </s:itemRenderer>
        </s:List>

I am trying to add a button that will display the location in a webView but i can not get the app to use the data.location from the array to use it with Google maps (i am just adding the data.location details to the end of a Google maps URL which will then use maps to search for the location I can get the button to work but it will not search for the location it just either displays an error in flash builder (which i assume is down to me not adding the data to the string correctly) or searches for "data.location" Here is the current code that will load the URL but with no location

        <s:List id="eventsDataGrid" width="100%" height="100%" dataProvider="{facebookEvents}">
        <s:itemRenderer>
            <fx:Component>
                <s:ItemRenderer>
                    <fx:Script>
                        <![CDATA[
                            import com.facebook.graph.utils.FacebookDataUtils;
                            var webView:StageWebView = new StageWebView
                            var mapURL:String = "http://maps.google.com/maps?f=d&hl=en&saddr="
                            private function time2DateStr(time:String):String {
                                return FacebookDataUtils.stringToDate(time).toLocaleString();
                            }

                            protected function getDirections_clickHandler(event:MouseEvent):void
                            {
                                webView.stage = this.stage;
                                webView.viewPort = new Rectangle(0, 100, stage.stageWidth, stage.stageHeight);
                                webView.loadURL(mapURL);    
                            }

                        ]]>
                    </fx:Script>
                    <s:HGroup paddingBottom="10" paddingTop="10">
                        <s:Image source="{data.pic}"/>
                        <s:VGroup width="100%">
                            <s:Label text="{data.name}" fontWeight="bold" width="100%"/>
                            <s:Label text="Where: {data.location}" id="locationtxt"/>
                            <s:Label text="When: {time2DateStr(data.start_time)}"/>
                            <s:Label text="Get Directions" click="getDirections_clickHandler(event)" id="getDirections"/>
                        </s:VGroup>
                    </s:HGroup>
                </s:ItemRenderer>
            </fx:Component>
        </s:itemRenderer>
        </s:List>

FULL CODE

<fx:Script>
<![CDATA[
    import mx.collections.ArrayCollection;
    [Bindable] private var facebookEvents:ArrayCollection;
    import com.facebook.graph.FacebookMobile;
    private function onLoad():void
    {
        if(FacebookMobile.getSession() != null) {
            getEvents()
        } else {
            eventsDataGrid.visible=false
            NotLogin.visible=true
        }

    }

    private function getEvents():void {
        var fql:String = "select name, location, pic, start_time from event where creator = 148839887036 and eid in (select eid from event_member where uid=148839887036)";
        FacebookMobile.fqlQuery(fql, handleGetEventsResponse);
    }

    private function handleGetEventsResponse(events:Object, fail:Object):void {
        if (events != null)
            facebookEvents = new ArrayCollection(events as Array);
        //else
            //status = "Error";
    }   
]]>

    <s:List id="eventsDataGrid" width="100%" height="100%" dataProvider="{facebookEvents}">
        <s:itemRenderer>
            <fx:Component>
                <s:ItemRenderer>
                    <fx:Script>
                        <![CDATA[
                            import com.facebook.graph.utils.FacebookDataUtils;
                            var webView:StageWebView = new StageWebView
                            var mapURL:String = "http://maps.google.com/maps?f=d&hl=en&saddr="
                            private function time2DateStr(time:String):String {
                                return FacebookDataUtils.stringToDate(time).toLocaleString();
                            }

                            protected function getDirections_clickHandler(event:MouseEvent):void
                            {
                                webView.stage = this.stage;
                                webView.viewPort = new Rectangle(0, 100, stage.stageWidth, stage.stageHeight);
                                webView.loadURL(mapURL);    
                            }

                        ]]>
                    </fx:Script>
                    <s:HGroup paddingBottom="10" paddingTop="10">
                        <s:Image source="{data.pic}"/>
                        <s:VGroup width="100%">
                            <s:Label text="{data.name}" fontWeight="bold" width="100%"/>
                            <s:Label text="Where: {data.location}" id="locationtxt"/>
                            <s:Label text="When: {time2DateStr(data.start_time)}"/>
                            <s:Label text="Get Directions" click="getDirections_clickHandler(event)" id="getDirections"/>
                        </s:VGroup>
                    </s:HGroup>
                </s:ItemRenderer>
            </fx:Component>
        </s:itemRenderer>
        </s:List>


all i needed to do was to add the data into the brackets (dont know the offical name) here it is

protected function directions_click (location:String):void
{
  navigateToURL(new URLRequest('http://maps.google.co.uk/maps?q=' + location));
}

and for the button/ label

<s:Label text="Get Directions" fontFamily="lucida grande" fontSize="14" color="#3b5998" click="directions_click(data.location)"/>
0

精彩评论

暂无评论...
验证码 换一张
取 消