Sencha Touch高性能list最简单高效的实现方案

Sencha Touch高性能list最简单高效的实现方案



Sencha Touch 的list,性能非常的低,官方论坛有人说超过200个项就已经是超标了!但事实上超过40个项就非常卡了,尤其是每个项里还有图片的时候,在iPhone中可能效果不错,但到了Android,你可能会摔手机.

不顺畅的原因其实是元素太多,必需限制显示的数据,但又要解决上滚和下滚显示相应的项,有人会想到用分页,其实分页相当的麻烦,下面就说一个鄙人奋战了一天摸索出来的方法,仅仅三步,几行代码,你看了也会会心一笑.

   
   
  1. 1.  me.pageNum = 1;//当前页 
  2.         me.pageItems = Ext.is.Phone?15:25;//每页显示项 
  3.         me.list.scroller.on('scrollend',me.onScrollerEnd,me);//监听滚动停止事件 
   
   
  1. 2.  onScrollerEnd : function(scroller,offsets){//分页逻辑  
  2.         var me = this,  
  3.             lh = scroller.size.height,  
  4.             h  = me.list.getHeight(),  
  5.             y  = offsets.y;  
  6.         if(me.filterValue && me.filterValue!=''){return;}  
  7.         if(y==0){//滚动到顶部时显示上一页  
  8.             if((me.pageNum>1)){  
  9.                 me.pageNum--;  
  10.                 me.doPaging ();  
  11.             }  
  12.         }else if((y+h)>=lh){//滚动显底部时显示下一页  
  13.             var c = me.listStore.getCount();  
  14.             if(c > (me.pageNum*me.pageItems)){  
  15.                 me.pageNum++;  
  16.                 me.doPaging ();  
  17.             }  
  18.         }  
  19.     },  

   
   
  1. 3.      
  2.     doPaging : function(){//分页逻辑  
  3.        var me = this,  
  4.         n = me.pageNum,  
  5.         y = me.pageItems;  
  6.         me.helpStore.removeAll();//清除所有数据  
  7.         me.helpStore.add(me.listStore.getRange((n-1)*y, (n*y)));//取主store里的范围     
  8.         me.list.bindStore(me.helpStore);//绑定到当前list里  
  9.         me.list.scroller.scrollTo({x: 0, y:0}, false);//滚动到顶部  
  10.     },//end function doPaging  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值