Добавить данные массива в переменную - PullRequest
0 голосов
/ 11 октября 2011

У меня есть приложение, которое в настоящее время получает данные о событиях из Facebook и отображает их в списке.

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

Я пытаюсь добавить кнопку, которая отображает местоположение в веб-представлении, но я не могу получитьприложение, чтобы использовать data.location из массива, чтобы использовать его с картами Google (я просто добавляю данные data.location в конец URL-адреса карт Google, который затем будет использовать карты для поиска местоположения, для которого можно получить кнопкуработать, но он не будет искать местоположение, он просто либо отображает ошибку во Flash Builder (которая, как я полагаю, зависит от того, что я не добавил данные в строку правильно), либо ищет «data.location». Вот текущий код, который будетзагрузить URL, но без указания местоположения

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

ПОЛНЫЙ КОД

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

1 Ответ

0 голосов
/ 17 октября 2011

все, что мне нужно было сделать, это добавить данные в скобки (не знаю официального имени), вот они

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

и для кнопки / метки

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