2012-02-13 14 views
0

チュートリアルの1つに基づいて小さなRSSリーダーを開発します。これは、HomeView上で、ユーザーがRSSアイテムのタイトルをクリックした後、DetailsView.mxmlにアプリプッシュビューを表示する単純なアプリケーションです。しかし、私には小さな問題があります。私はHomeViewにリフレッシュボタンを含めていますが、リストをスクロールしたり、アイテムをクリックしてからHomeViewリストに戻ったりするたびに、リフレッシュしています。これは多くのインターネット接続を使用します。このアプリケーションをアプリがopeninのときにロード(リフレッシュ)してから、リフレッシュボタンを押すだけでリフレッシュできるようにすることは可能ですか?フレックス4.5:アプリが開いてボタンをクリックしたときにのみリフレッシュ

P.S.あなたに

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

答えて

0

こんにちはROKY、

 private var dataLoaded : Boolean = false; 

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

:、私は簡単な説明、I`mないプログラマ:)

任意の助けてくれてありがとう、ここHomeViewのソースコードであるが必要にしてくださいデータが既にロードされていても、リフレッシュするためにgetData(true)を呼び出すことができます。

+0

Heeey Shaun「いい男」:))私はこのコードに1つのエラーがあります。 "protected function getData(force:Boolean = false):void"というエラーが発生しました:1021:重複した関数定義。 – Roky

+0

貼り付け済みで、既存のものを置き換えてはいけません。 AS3では、あなたが言っていることであるオーバーロードメソッドは許可されていません。オーバーロードは、メソッド呼び出しのデータ型が異なるが、メソッド名が同じであると言う異なる「シグネチャ」がある場合です。 AS3ではこれを行うことができませんので、既存のメソッドに貼り付けるだけで済みます。あるいは、古いものを2つ削除する必要があります。 – shaunhusain

+0

嬉しい私はまだソースを持っていました:) – shaunhusain

関連する問題