sencha touch 高性能 list最简单高效的实现方案
2015-12-27 15:06
573 查看
sencha touch 的list,性能非常的低,官方论坛有人说超过200个项就已经是超标了!但事实上超过40个项就非常卡了,尤其是每个项里还有图图片的时候,在iphone中可能效果不错,但到了android,你可能会摔手机.
卡的原因其实是元素太多,必需限制显示的数据,但又要解决上滚和下滚显示相应的项,有人会想到用分页,其实分页相当的麻烦,下面就说一个鄙人奋战了一天摸索出来的方法,仅仅三步,几行代码,你看了也会会心一笑.
1.
view
source
print?
2.
view
source
print?
3.
view
source
print?
卡的原因其实是元素太多,必需限制显示的数据,但又要解决上滚和下滚显示相应的项,有人会想到用分页,其实分页相当的麻烦,下面就说一个鄙人奋战了一天摸索出来的方法,仅仅三步,几行代码,你看了也会会心一笑.
1.
view
source
print?
1.
me.pageNum = 1;
//当前页
2.
me.pageItems = Ext.is.Phone?15:25;
//每页显示项
3.
me.list.scroller.on(
'scrollend'
,me.onScrollerEnd,me);
//监听滚动停止事件
2.
view
source
print?
01.
onScrollerEnd :
function
(scroller,offsets){
//分页逻辑
02.
03.
var
me =
this
,
04.
05.
lh = scroller.size.height,
06.
07.
h = me.list.getHeight(),
08.
09.
y = offsets.y;
10.
11.
if
(me.filterValue && me.filterValue!=
''
){
return
;}
12.
13.
if
(y==0){
//滚动到顶部时显示上一页
14.
15.
if
((me.pageNum>1)){
16.
17.
me.pageNum--;
18.
19.
me.doPaging ();
20.
21.
}
22.
23.
}
else
if
((y+h)>=lh){
//滚动显底部时显示下一页
24.
25.
var
c = me.listStore.getCount();
26.
27.
if
(c > (me.pageNum*me.pageItems)){
28.
29.
me.pageNum++;
30.
31.
me.doPaging ();
32.
33.
}
34.
35.
}
36.
37.
},
3.
view
source
print?
01.
doPaging :
function
(){
//分页逻辑
02.
03.
var
me =
this
,
04.
05.
n = me.pageNum,
06.
07.
y = me.pageItems;
08.
09.
me.helpStore.removeAll();
//清除所有数据
10.
11.
me.helpStore.add(me.listStore.getRange((n-1)*y, (n*y)));
//取主store里的范围
12.
13.
me.list.bindStore(me.helpStore);
//绑定到当前list里
14.
15.
me.list.scroller.scrollTo({x: 0, y:0},
false
);
//滚动到顶部
16.
17.
},
//end function doPaging
相关文章推荐
- 贪吃蛇详解Windows编程(二)
- Java多线程中同步Boolean问题
- C++习题 虚函数-计算图形面积
- MySql中的外键约束
- 【Unity Shader】基于UGUI的水波倒影按钮
- Git 版本恢复命令reset
- s5pv210 LCD控制器初始化
- Redis:redission 源代码剖析2 编码解码过程
- POJ1011 一种dfs实现
- 修改Android签名证书keystore的密码、别名alias以及别名密码
- Redis:redission 源代码剖析1 连接建立
- Android蓝牙打印二维码打印外卖单打印
- http 监测器
- JSP下拉选框,级联选择
- C/C++中const关键字详解
- 期末总结
- 基于Cloudera Manager 5和CDH5(版本5.3.3)的Hadoop集群安装
- 为什么说每个程序员都应该刷几道LeetCode?
- (九)串行口方式0 拓展并行输入端口 74LS165 芯片
- [leetcode] 258. Add Digits 解题报告