Android listview 的优化
接[Android listview的应用][1]
在我们上一篇[Android listview的应用][1]中,我们的adapter中的getView()方法中每次都将布局重新加载一遍,这样就会导致我们的listview的运行效率很低.
[1]:http://www.cnblogs.com/stareblankly/p/5057340.html
如果我们称上一篇是逗比式,那么接下来就是普通式.
@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		Fruit fruit=getItem(position);
		View view;
		if (convertView==null) {
			view=LayoutInflater.from(getContext()).inflate(resourceid, null);
		}else {
			view=convertView;
		}
		TextView tv=(TextView) view.findViewById(R.id.fruit_name);
		ImageView iv=(ImageView) view.findViewById(R.id.furit_image);
		iv.setImageResource(fruit.getImageId());
		tv.setText(fruit.getName());
		return view;
	}
可以看到,在代码中我们对convertView进行了判断,只有当convertView为空的时候,我们才去加载布局,不过不为空则直接对convertView进行重用,这样就大大的提高了ListView的运行效率.不过其实我们这部分代码其实还是可以继续进行优化的,接下来就是ListView的文艺式.
@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		Fruit fruit=getItem(position);
		View view;
		ViewHolder viewHolder;
		if (convertView==null) {
			view=LayoutInflater.from(getContext()).inflate(resourceid, null);
			viewHolder=new ViewHolder();
			viewHolder.iv=(ImageView) view.findViewById(R.id.furit_image);
			viewHolder.tv=(TextView) view.findViewById(R.id.fruit_name);
			view.setTag(viewHolder);	//将ViewHolder存储在view中
		}else {
			view=convertView;
			viewHolder=(ViewHolder) view.getTag();	//重新获取viewHolder
		}
		viewHolder.iv.setImageResource(fruit.getImageId());
		viewHolder.tv.setText(fruit.getName());
		return view;
	}
	class ViewHolder{
		ImageView iv;
		TextView tv;
	}
在这里我们定义了一个内部类ViewHolder用来存放控件,然后把ViewHolder存储在view中,这样每次加载的时候就不用重新根据ID来获取控件来,这样我们listview运行的效率又快乐很多.
Android listview 的优化的更多相关文章
- Android ListView性能优化实例讲解
		
前言: 对于ListView,大家绝对都不会陌生,只要是做过Android开发的人,哪有不用ListView的呢? 只要是用过ListView的人,哪有不关心对它性能优化的呢? 关于如何对ListVi ...
 - Android Listview 性能优化
		
首先我一般使用的适配器是BaseAdapter,其中有两个方法最主要,分别是: getCount,getView, 在对Listview 进行优化的时候,首先使用 convertview 和viewH ...
 - Android ListView 全面优化
		
结合昨天学习的多线程,今天又继续对ListView进行了优化,包括异步加载图片,滑动时暂停加载,滑动停止后再加载显示界面中的item. 综合ListView在使用时参考的多篇博客,这里对ListVie ...
 - (翻译) Android ListView 性能优化指南
		
本文翻译了Lucas Rocha的Performance Tips for Android’s ListView.这是一篇关于介绍如何提升ListView性能的文章,非常的优秀.使得我拜读之后,忍不住 ...
 - Android ListView的优化
		
最近的项目中有通讯录这个模块,里面的通讯录涉及的联系人数量很大,导致在加载页面的时候有点卡,所以就必须得进行优化,优化的最终实现理论是什么?就是让ListView一次性加载的数据较少,后续根据用户操作 ...
 - android: ListView历次优化
		
第一版: ListView一屏显示多少对象其内部就创建多少View对象.滑动时退出的缓存对象留给滑进去时调用getView传的convertView.因为如果每次都findViewById查找创建视图 ...
 - android ListView优化
		
android ListView通过优化重用历史缓存实现.listview相应的数据适配器一般使用自己定义BaseAdapter子类,重用历史缓冲区来提高性能. 例如,下面的示例代码演示: 1.lis ...
 - Android之ListView性能优化——一行代码绑定数据——万能适配器
		
如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
 - android ListView的介绍和优化
		
xml设计 <?xml version="1.0"?> -<RelativeLayout tools:context=".MainActivity&qu ...
 
随机推荐
- (转) Java程序员应该知道的10个调试技巧
			
原地址:http://www.csdn.net/article/2012-09-03/2809495-java-debugging-tips-with-eclipse 调试可以帮助识别和解决应用程序缺 ...
 - shell启动时读取的配置文件
			
bash shell具体可以分为3种类型,这3种类型为: 1 login shell 就是需要输入用户名和密码才能登陆的shell 2 可交互的非login shell 就是不用登陆的,但是可以同用户 ...
 - tomcat7.0的源码下载
			
如果想知道servlet的HttpServlet的实现细节,想知道jsp的org.apache.jasper.runtime.HttpJspBase的实现细节,想知道tomcat关于servlet和j ...
 - css布局学习笔记之box-sizing
			
当你设置了元素的宽度,实际展现的元素却能够超出你的设置:因为元素的边框和内边距会撑开元素. .div{ width: 500px; margin: 20px auto; padding: 50px; ...
 - JuPyter(IPython) Notebook中通过pip安装第三方Python Module
			
JuPyter(IPython) Notebooks中使用pip安装Python的模块 刚开始接触JuPyter Notebook的时候觉得这是个不错的写技术博客的工具,可以很直观的把代码和结果结合在 ...
 - [C++程序设计]多维数组元素的地址
			
设有一个二维数组a,它有3行4列.它的定义为int a[3][4]={{1,3,5,7},{9,11,13,15},{17,18,21,23}};a是一个数组名.a数组包含3行,即3个元 素:a[0] ...
 - python笔记之提取网页中的超链接
			
python笔记之提取网页中的超链接 对于提取网页中的超链接,先把网页内容读取出来,然后用beautifulsoup来解析是比较方便的.但是我发现一个问题,如果直接提取a标签的href,就会包含jav ...
 - VIJOS 1889 天真的因数分解(莫比乌斯反演,容斥原理)
			
https://vijos.org/p/1889 同BZOJ2440..,不过这题要求的是有因数因子的,所以莫比乌斯函数要稍微改一下 #include<algorithm> #includ ...
 - Planner – 项目管理软件
			
http://www.appinn.com/planner/ Planner 是一款开源.易用.跨平台的项目管理软件.@appinn 二猪用了 OpenProject 几年,现在已经受够了它的各种 ...
 - Redis应用场景-整理
			
1. MySql+Memcached架构的问题 Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现. ...