我们都知道Android中Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有? 在我们的列表有1000000项时会是什么样的?是不是会占用极大的系统资源?

看看下面的代码:

publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
Viewitem=mInflater.inflate(R.layout.list_item_icon_text,null);
((TextView)item.findViewById(R.id.text)).setText(DATA[position]);
((ImageView)item.findViewById(R.id.icon)).setImageBitmap(
(position&1)==1?mIcon1:mIcon2);
returnitem;
}

大家不用我说也知道是怎么样了。如果超过1000000项时,后果不堪设想!您可千万别这么写!

再来看看下面的代码:

publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
if(convertView==null){
convertView=mInflater.inflate(R.layout.item,null);
}
((TextView)convertView.findViewById(R.id.text)).setText(DATA[position]);
((ImageView)convertView.findViewById(R.id.icon)).setImageBitmap(
(position&1)==1?mIcon1:mIcon2);
returnconvertView;
}

怎么样,上面的代码是不是好了很多?系统将会减少创建很多View。性能得到了很大的提升。

当然还有更优化的代码:

publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
ViewHolderholder;
if(convertView==null){
convertView=mInflater.inflate(R.layout.list_item_icon_text,null);
holder=newViewHolder();
holder.text=(TextView)convertView.findViewById(R.id.text);
holder.icon=(ImageView)convertView.findViewById(R.id.icon);
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
holder.text.setText(DATA[position]);
holder.icon.setImageBitmap((position&1)==1?mIcon1:mIcon2);
returnconvertView;
} staticclassViewHolder{
TextViewtext;
ImageViewicon;
}

网盘学习资源分享:http://pan.baidu.com/share/home?uk=1882162285

Android 开发ListView适配器优化的更多相关文章

  1. Android开发——ListView使用技巧总结(二)

    0.  前言 Android中的ListView是用的比较多的控件之一,在上一篇Android开发--ListView使用技巧总结(一)中对ListView的ViewHolder机制.优化卡顿方式以及 ...

  2. Android开发——ListView使用技巧总结(一)

    )还有一点就是要控制异步任务的执行频率,因为当用户频繁的上下滑动,会瞬间产生上百个异步任务,会带来无意义的大量的UI更新操作,因此可以考虑在列表滑动时停止进行异步任务,直到列表停下来. //判断列表的 ...

  3. android开发_SimpleAdapter适配器

    android开发_SimpleAdapter适配器   新建项目: 项目结构: drawable-hdpi文件夹中的图片是自己加入的.主要是在菜单选项中显示的图片: 运行效果: 代码部分: main ...

  4. ym——Android之ListView性能优化

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android之ListView性能优化 假设有看过我写过的15k面试题的朋友们一定知 ...

  5. android开发中图片优化步骤

    android开发中图片优化方法 1.图片加载方法,方便用户加载图片 /*** * 加载本地图片 * @param context:主运行函数实例 * @param bitAdress:图片地址,一般 ...

  6. Android之ListView性能优化——一行代码绑定数据——万能适配器

    如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...

  7. Android—万能ListView适配器

    ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...

  8. Android开发ListView嵌套ImageView实现单选按钮

    做Android开发两年的时间,技术稍稍有一些提升,刚好把自己实现的功能写出来,记录一下,如果能帮助到同行的其他人,我也算是做了件好事,哈哈!!废话不多说,先上个图. 先上一段代码: if (last ...

  9. android 开发-ListView列表显示控件的实现

    列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View. 2.适配器 用来把数据映射到ListView上的中介. 3.数据    具体的将被映射的字符串,图片,或者基本组件. 根据列表 ...

随机推荐

  1. mongoengine连接错误:“False is not a read preference”解决方法

    问题出现: Mongoengine是一个可以操作MongoDB数据库的对象-文档映射器(Object-Document Mapper).出于工作需要,最近在使用MongoDB+Django实现一个数据 ...

  2. struts2笔记09-动态方法调用

    1.action配置 <action name="testDynamic" class="com.test.actions.TestAction"> ...

  3. [ReactiveCocoa]最简单的RAC入门操作

    当knowckout.js出来的时候,确实被其kobinding惊艳了一下,等到AngularJS出来的时候,把MVVM的模式更是向前推进了一步.所以当ReactiveCocoa出来的时候,也很感兴趣 ...

  4. 提交(post)xml文件给指定url的2种方法

    原文:提交(post)xml文件给指定url的2种方法 1  这段代码是在网上搜到的,拿来共享,项目正好要用到.其中的data你只需要传递一个xml字符串就可以 protected   string  ...

  5. CSS实现页面背景自动切换功能

    From here:http://xiaomiya.iteye.com/blog/2047728 请看效果图: 完整代码如下: <!DOCTYPE HTML> <html> & ...

  6. ubuntu连接无线网

    我的ubuntu是因为没有安装无线网卡驱动,首先查看网卡型号 但是我在Broadcom官网上没有找到BCM43142的驱动. 通过谷歌后发现通过安装bcwl-kernel-source来解决这个问题, ...

  7. Linux下的Oracle 11gr2安装完成的的自启动操作。

    Linux下的Oracle在安装结束后是处于运行状态的.重启机器后,Oracle不会像在Windows下那样将Oracle添加到Windows服务,在linux下需要手动启动Orcle服务 以orac ...

  8. 量身定制顺美男女西服、衬衫、大衣、T恤等 - 北京58同城

    量身定制顺美男女西服.衬衫.大衣.T恤等 - 北京58同城 量身定制顺美男女西服.衬衫.大衣.T恤等 发布时间:2014-04-11浏览2次

  9. Android4.2.2的Stagefright维护编解码器的数据流

    这里是他们自己的源代码阅读点滴总结属性,转请注明出处,谢谢. 欢迎和大家分享.qq:1037701636 email:gzzaigcn2012@gmail.com Android源代码版本号Versi ...

  10. 自定义配置文件的使用(web.config/app.config)

    以下非原创作品,但都是自己看过理解并写过,记录下来,以便之后项目的使用或其它用途. (1)只需要简单配置单一属性值: <configuration> <configSections& ...