提高ListView的效率
按照普通的写法,如果ListView里面有比较多的东西的话,在加载每一个Item的时候,是非常非常卡的。具体表现就是滚动起来的时候会看见明显的卡顿。
关键还是处理自定义Adapter里面的getView函数,毕竟这个函数才是绘制Item的。
//观察getView函数,发现是有View convertView这个参数
public View getView(int position, View convertView, ViewGroup parent)
//如果convertView不为空的话,就是说这个Item的View已经是绘制过的了,我们直接view = convertView就好,不用再重新对View进行加工了。 if(convertView == null){ view = LayoutInflater.from(getContext()).inflate(resouceID,null); //省略 }else{ view = convertView; }
进一步优化:
可以自定义一个ViewHolder类,然后这个类的成员变量全是Item里面要用到的控件,用这个类来缓存Item的控件。用View.setTag(viewHolder)和View绑定,
如果convertView非空的时候,直接把里面的控件取出来就好了,不需要再次findViewByID一次。
假设Item里面有一个TextView,一个Button。
class ViewHolder{ TextView tv; Button bt; }
在getView里面:
public View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder viewHolder; //没有绘制过的话
if(convertView == null){ view = LayoutInflater.from(getContext()).inflate(resouceID,null); viewHolder = new ViewHolder();
//把所有控件弄进ViewHolder里面保存
viewHolder.tv = (TextView)view.findViewById(R.id.itemtext); viewHolder.bt = (Button)view.findViewById(R.id.itembutton); //绑定在一起
view.setTag(viewHolder); }else{
//如果有的话就直接取出
view = convertView; //经过了上一步,一个绘制过的View是肯定有一个ViewHolder的。
//复制的是地址,只是方便修改
viewHolder = (ViewHolder) view.getTag(); } viewHolder.ty.setText("xx');
viewHolder.bt.setText("xx"); //或者其他代码 //会根据view以及它绑定的viewHolder来绘制Item return view; }
好了,这样优化过后,listView应该效率会很高了
提高ListView的效率的更多相关文章
- 提高SQL查询效率(SQL优化)
要提高SQL查询效率where语句条件的先后次序应如何写 http://blog.csdn.net/sforiz/article/details/5345359 我们要做到不但会写SQL,还要做到 ...
- 提高php编程效率技巧
提高php编程效率技巧 投稿:mrr 字体:[增加 减小] 类型:转载 时间:2015-08-13 php是全球范围应用范围最广的开发语言,php和linux.apache.mysql紧密结合,形 ...
- java提高数据库访问效率代码优化
package com.jb.jubmis.comm; import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQL ...
- iOS开发——实用篇&提高iOS开发效率的方法和工具
提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...
- 提高SQL查询效率的常用方法
提高SQL查询效率的常用方法 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driv ...
- 使用Dropbox提高个人数据管理效率
Dropbox 应该大家都不陌生,其在云存储阵营中独树一帜,通俗的说它是提供多终端和云之间的数据同步服务,而就其本质来说它无非是将数据的采集.存储和分发三个关节打通,整合成统一服务对外提供.这就好比只 ...
- html样式表极大地提高了工作效率
样式表极大地提高了工作效率 样式表定义如何显示 HTML 元素,就像 HTML 3.2 的字体标签和颜色属性所起的作用那样.样式通常保存在外部的 .css 文件中.通过仅仅编辑一个简单的 CSS 文档 ...
- 提高你开发效率的十五个Visual Studio 2010使用技巧
提高你开发效率的十五个Visual Studio 2010使用技巧 相信做开发的没有不重视效率的.开发C#,VB的都知道,我们很依赖VS,或者说,我们很感谢VS.能够对一个IDE产生依赖,说明这个ID ...
- 提高运维效率(二)桌面显示IP
运维人员远控电脑询问IP时,总要告诉用户找ip的步骤,岂不很烦? 以下方法直观地把ip地址显示在桌面上,再做个入职培训,即可提高运维效率. 1. 下载bginfo.exe软件,放到域控下的netlo ...
随机推荐
- jQuery对select操作
(转自:http://www.cnblogs.com/as285996985/articles/1535014.html) //遍历option和添加.移除optionfunction changeS ...
- springmvc的RESTful风格
springmvc对RESTful得支持RESTful架构,就是目前最流行得一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以挣得到越来越多网站的采用. RESTful(即Repres ...
- L132
Major Opioid Maker to Pay for Overdose-Antidote Development A company whose prescription opioid mark ...
- CollectionUtils工具类使用指南
CollectionUtils提供很多对集合的操作方法,常用的方法如下:(参考文章:http://www.open-open.com/code/view/1420470842125) import o ...
- HAWQ取代传统数仓实践(十一)——维度表技术之维度合并
有一种合并维度的情况,就是本来属性相同的维度,因为某种原因被设计成重复的维度属性.例如,在销售订单示例中,随着数据仓库中维度的增加,我们会发现有些通用的数据存在于多个维度中.客户维度的客户地址相关信息 ...
- Build ios app with Delphi Xe4. Lazy Social Talker ready for sale.
Yes, it is build with Delphi XE4. try it. now. What is Lazy Social Talker? Lazy Social Talker is a ...
- kalman 滤波 演示与opencv代码
在机器视觉中追踪时常会用到预测算法,kalman是你一定知道的.它可以用来预测各种状态,比如说位置,速度等.关于它的理论有很多很好的文献可以参考.opencv给出了kalman filter的一个实现 ...
- 进程(并发,并行) join start 进程池 (同步异步)
一.背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象.进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有 ...
- [转载] ffmpeg 基本数据结构和对象: AVPacket、AVPicture、AVFrame
一.AVPacket /** * AVPacket 作为解码器的输入 或 编码器的输出. * 当作为解码器的输入时,它由demuxer生成,然后传递给解码器 * 当作为编码器的输出时,由编码器生成,然 ...
- CDlinux无线破解系统
cdlinux是一款功能非常强大的无线密码破解器,cdlinux兼容pin软件,不用抓取握手包.不用跑字典.不用客户端在线就能够破解无线路由器的密码,轻轻松松帮助用户达到蹭网的目的. 基本简介 cdl ...