Flex 4.5: обновлять только при открытии приложения и нажимать кнопку - PullRequest
0 голосов
/ 13 февраля 2012

Я разрабатываю небольшую программу для чтения RSS на основе одного из учебных пособий.Это простое приложение с HomeView, и когда пользователь нажимает Заголовок элементов RSS, то приложение открывает представление на DetailsView.mxml.Но у меня есть небольшая проблема.Я включаю кнопку обновления в HomeView, но каждый раз, когда я прокручиваю список или нажимаю элемент, а затем возвращаюсь в HomeView, список обновляется.Это использовать много интернет-соединения.Можно ли сделать это приложение таким, чтобы при его открытии загружать (обновлять) список потом обновлять только нажатием кнопки «Обновить»?

PS Пожалуйста, мне нужно простое объяснение, я не программист:)

Спасибо за любую помощь, и вот исходный код для HomeView:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:rssreader="services.rssreader.*"
        xmlns:s="library://ns.adobe.com/flex/spark"
        title="Elektro-Vozila" viewActivate="getData()">

    <fx:Script>
        <![CDATA[
            import spark.events.IndexChangeEvent;

            protected function getData():void
            {
                getDataResult.token = rssreader.getData();
            }

            import mx.events.CollectionEvent;
            import valueObjects.Item;

            protected function fixEntityReferences(event:CollectionEvent):void
            {
                myList.labelFunction = replaceEntity;

                function replaceEntity(item:Item):String
                {
                    var p1:RegExp = /(&quot;)/ig; // perhaps add more here later
                    var thisString:String = item.title.replace(p1, "");
                    trace(thisString);
                    return thisString;

                }
            }

            protected function myList_changeHandler(event:IndexChangeEvent):void
            {

                var RSSItem:Object = myList.dataProvider.getItemAt(event.newIndex);
                navigator.pushView(DetailsView, RSSItem);
            }

            private function refreshList():void

            {

                    Object(navigator.activeView).getData();  

            }
        ]]>

    </fx:Script>
    <s:actionContent>
        <s:Button label="Refresh"
                  click="refreshList()"/>
    </s:actionContent>
    <fx:Declarations>
        <s:CallResponder id="getDataResult"/>
        <rssreader:Rssreader id="rssreader"/>
        <s:CallResponder id="getDataResult2"/>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:List bottom="0"
            change="myList_changeHandler(event)"
            id="myList"
            itemRenderer="views.IconItemRenderer"
            labelField="title"
            left="0"
            right="0"
            top="0">
        <s:AsyncListView list="{getDataResult.lastResult}"
                         collectionChange="fixEntityReferences(event)"/>

    </s:List>
</s:View>

1 Ответ

0 голосов
/ 15 февраля 2012

Привет Роки,

        private var dataLoaded : Boolean = false;

        protected function getData(force : Boolean = false) : void
        {
            if (!dataLoaded || force)
            {
                getDataResult.token = rssreader.getData();
                dataLoaded = true;
            }
        }

В вашей кнопке обновления вы можете вызвать getData (true) для принудительного обновления, даже если данные уже загружены.

...