2019独角兽企业重金招聘Python工程师标准>>>

摘用别人的,谢谢作者

Adapter的作用是界面与数据之间的桥梁,通过设置适配器至ListView控件后(如调用ListView的 setAdapter(ListAdapter adapter) ),列表的每一项会显示至页面中。其实,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View,如: @Override public View getView(int position, View convertView, ViewGroup parent) { return super.getView(position, convertView, parent); } 我们看一看下面的这段代码: public View getView(int position, View convertView, ViewGroup parent) { View newView = mInflater.inflate(R.layout.list_item, null); ((TextView) newView .findViewById(R.id.text)).setText(DATA[position]); ((ImageView) newView .findViewById(R.id.icon)).setImageBitmap( (position & 1) == 1 ? mIcon1 : mIcon2); return newView ; } 上面的代码块中,我通过LayoutInflater.inflate(,)将Layout文件–layout.list_item转换为View. (注:Layout也是View的子类,但在android中如果想将xml中的Layout转换为View放入.java代码中操作,只能通过Inflater,而不能通过findViewById()) 这时,如果我的ITEM项有数以千条这样多或更多呢,再以上面代码块的写法,后果自己想想吧。

于是,改用其它一种写法: public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item, null); } ((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]); ((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap( (position & 1) == 1 ? mIcon1 : mIcon2); return convertView; } 这时,上面的代码是不是好了很多?系统将会减少创建很多View。性能得到了很大的提升。 到这里,问一下,还有没有优化的方法呢,是有的,请看————》》: public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_icon_text, null); holder = new ViewHolder(); 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); return convertView; }

static class ViewHolder { TextView text; ImageView icon; } 这样系统性能会得到更大的提升。 希望可能帮助到大家。这也是平时面试当中面试官经常会问到的”ListView的优化”的问题。

转载于:https://my.oschina.net/chaloongjir/blog/209731

面试之 listview优化相关推荐

  1. 【提升栈】ListView优化

    前言 ListView优化一直是一个老生常谈的问题.无论是面试还是寻常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看怎样最大化的优化ListView的性能. 1.在adapter中 ...

  2. ListView优化的代码

    第三种ListView优化:通过convertView+ViewHolder来实现,ViewHolder就是一个静态类,使用 ViewHolder 的关键好处是缓存了显示数据的视图(View),加快了 ...

  3. ListView优化机制及滑动时数据时出现的数据错乱重复问题

    ListView优化机制及滑动时数据时出现的数据错乱重复问题 转载于:https://www.cnblogs.com/zhujiabin/p/5596998.html

  4. 阿里菜鸟面试之sql优化

    阿里菜鸟面试之sql优化 sql优化 sql优化是一个很大的话题,我在这里举几个常用的例子:(主要针对mysql) 不要使用子查询 select * from t1 where xxx in (sel ...

  5. Android之ListView优化

    关于ListView几个方面的优化: ListView的大小设定固定值; 复用convertView, 使用ViewHolder提高在容器中查找组件的效率; 使用分页加载; 快速滚动时, item不显 ...

  6. Android listview优化以及listview混合itemview

    listView = (ListView) findViewById(R.id.listview); mAdapter = new VideoListAdapter(this); listView.s ...

  7. Android优化系列之ListView优化老生常谈

    本文内容:adapter,listview的优化,RecycleBi,google大会推荐优化, 实现ListView的过程,Adapter起到了至关重要的作用,不仅仅因为getview()方法.那么 ...

  8. java客户端查询hive很慢_Hive面试,如何优化查询效率!

    1,开启FetchTask 一个简单的查询语句,是指一个没有函数.排序等功能的语句,当开启一个Fetch Task功能,就执行一个简单的查询语句不会生成MapRreduce作业,而是直接使用Fetch ...

  9. ListView优化机制及滑动时数据时出现的数据错乱重复问题 图片、checkBox等

    该篇内容主要是记录我在实际开发中遇到的ListView滑动时数据错乱的几种情况,以及解决方法.在进行ListView滑动时数据错乱问题讨论之前会对ListView所谓的<优化>进行说明.文 ...

最新文章

  1. 爬虫与浏览器的区别,爬虫产生(出自简书)
  2. 智源人工智能算法大赛开锣,百万奖金激励 AI 算法创新
  3. 2345电脑管家_2345软件管家下载|2345软件管家 2.0 官方正式版
  4. python 字典添加元素乱序了_Python有序字典的两个小“惊喜”
  5. MySQL(6)视图
  6. 策略模式,工厂模式,单例模式编写身份证的验证算法
  7. uchar与char
  8. fv-15php1c 安装图,SQLite - C/C++接口 API(一)
  9. 20191109每日一句
  10. 免费RDP报表工具试用感受
  11. 单片机c语言开关,10手把手教你学单片机的C语言程序设计_开关语句和循环语句.pdf...
  12. arm解锁 j-flash_jlink驱动下载(SEGGER J-FlASH ARM)
  13. ROS安装教程(详细)
  14. 计算机科学本质源自于数学思维,计算思维的特点、特征:形式化、程序化、机械化...
  15. ES6新增API - Reflect
  16. 虚拟机(vmware)linux中ctrl按键失灵 解决办法
  17. linux可执行文件签名,elf签名和可执行文件签名
  18. 雅虎瓦片地图切片问题
  19. 漫画女生怎么画(一步步教你画漫画)
  20. 用css/html实现搜索框 之一

热门文章

  1. 简单快速分析iis日志脚本
  2. 医疗卫生信息化 医学信息 医院管理 医疗信息化 资源下载
  3. 告别ASP.NET操作EXCEL的烦恼
  4. 后缀为hta,url,html,htm,html标签
  5. 自主招生计算机论文,自主招生
  6. linux安装python库报错pywin32_完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误...
  7. flex将元素放在最后_前端布局——Flex弹性布局
  8. Apollo核心概念
  9. explain分析执行计划
  10. Spring 事务core 模块-RowMapper