0

IListインターフェースを次のように実装します

[Bindable]
  public class MemList implements IList
  {
    public function MemList()
    {      
    }    
    public function get length():int
    {
      var size:int = 5000;
      return size;      
    }    
    public function addItem(item:Object):void
    {  
    }    
    public function addItemAt(item:Object, index:int):void
    {    
    }    
    public function getItemAt(index:int, prefetch:int=0):Object
    {      
      var obj:Object = new Object();                       
      obj.value = ByteStr(); // this function return a string
      return obj;      
    }    
    public function getItemIndex(item:Object):int
    {     
      return 0;
    }    
    public function itemUpdated(item:Object, property:Object=null, oldValue:Object=null, newValue:Object=null):void
    {     
    }    
    public function removeAll():void
    {      
    }    
    public function removeItemAt(index:int):Object
    {     
      return null;
    }    
    public function setItemAt(item:Object, index:int):Object
    {     
      return null;
    }    
    public function toArray():Array
    {     
      return null;
    }    
    public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void
    {
    }    
    public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void
    {
    }    
    public function dispatchEvent(event:Event):Boolean
    {
      return false;
    }    
    public function hasEventListener(type:String):Boolean
    {
      return false;
    }    
    public function willTrigger(type:String):Boolean
    {
      return false;
    }
  }

そのオブジェクトをデータプロバイダーとして DataGroup に提供します。Mxml ファイルでこれを行っています

<fx:Script><![CDATA[

    [Bindable]private var list:MemList = new MemList();

   protected function onBtnShow(event:MouseEvent):void
    {          
      send(somenumber, MAX_SIZE, onShowResp);//get data from network      
    }

    private function onShowResp(retVal:uint, ba:ByteArray):void
    {
      //this function called when ba bytearray is filled with data.
    }        

  ]]></fx:Script>
<s:Button id="btnShow" label="Show" click="onBtnShow(event)"/>
<s:Scroller verticalScrollPolicy="auto" id="aScroller" 
        liveScrolling="false">
        <s:DataGroup id="dgMemView" width="100%" height="350"          
          dataProvider="{list}"
          clipAndEnableScrolling="true"
          itemRenderer="ItemRenderer"
          >        
          <s:layout>
            <s:VerticalLayout useVirtualLayout="true"/>
          </s:layout>        
        </s:DataGroup>
      </s:Scroller>

public function ByteStr(loc:uint):String
    {
      //this function can access ba bytearray filled with data. do some processing 
      on that data and return a string.
      return string;
    }

私の質問は、ネットワーク データで満たす必要がある ba (bytearray) にデータがないため、アプリケーション実行データ グループに何も表示されない場合です。表示ボタンを押すと、リクエストが行われ、ba (bytearray) にデータが入力されます。データが変更されたことをデータグループに通知するにはどうすればよいですか。フラッシュ ビルダー 4.5 を使用しています。ありがとう

4

1 に答える 1

1

適切な collectionChange イベントをディスパッチする必要があります。http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/IList.html#event:collectionChangeのドキュメントを参照してください。

于 2013-03-15T07:22:11.270 に答える