Laya:动态向List(列表)中加载分页数据

2020-06-23  本文已影响0人  一眼就认出你

代码关键:
一、给list添加橡皮回弹事件Event.ElasticOver

 _rankList.scrollBar.on(Event.ElasticOver,this,_onRankListScrollEnd);

二、监听函数

 private function _onRankListScrollEnd(dirtag:String):void{
      trace("--------------_onRankListScrollEnd:"+dirtag);
       if(dirtag=="Up"){
               //向上滑
       }else if(dirtag=="Down"){
              //向下滑
       }
  }

三、列表数据

private var allRankList:HashMap;
private var nowRankType:int;
//初始化排行榜数据
private function initRankData():void{
        //HashMap可以直接用Object也可以
        allRankList= new HashMap();
        allRankList[RankType.ROLE_ZONGHE_RANK] = []; //战力
        allRankList[RankType.LEVEL_RANK]= []; //等级
}

//增加排行榜数据
private function addData(rank:Array,rankType:int):Array{
        nowRankType=rankType;
        for(var i:int=0;i<rank.length;i++){
              (allRankList[rankType] as Array).push(rank[i]);
         }
         return allRankList[rankType];  
 }

//服务器放回某一个page(分页)的排行榜数据
//rankType指的就是:RankType.ROLE_ZONGHE_RANK、RankType.LEVEL_RANK等
public function refreshRank(rank:Array,rankType:int):void{
         //给排行榜列表赋数据;                     
         this._rankList.array=addData(rank,rankType);
}

四、请求服务器

private static var PAGE_NUM:int=20; //每页20条数据
private static var PAGE_MAX:int=5;   //最大5页,也就是最多展示5*20=100条数据
private function downPage():void{
        var rank:Array=allRankList[nowRankType];
        var page:int=Math.floor(rank.length/PAGE_NUM); //当前页-1
        if(rank.length%PAGE_NUM==0&&page<PAGE_MAX){ //证明当前页不是最后一页
              sendRankList(page);
         }
}

 private function sendRankList(page:int=0):void{
       var protocol:CRequestRankList = new CRequestRankList();
       protocol.page = page;
       protocol.ranktype=nowRankType;
       if(page==0){
            allRankList[nowRankType] = [];
        }               
        NetworkManager.instance.Send(protocol);
}

注意:这些只是部分关键代码,list的渲染等没有展示出来,关键是掌握其主要思想,也就是第一、二的代码

上一篇下一篇

猜你喜欢

热点阅读