我们为了能在安卓有限的屏幕空间中显示更多的数据内容而需要Adapter适配器来进行展示,Adapter适配器中有一个方法叫getView,是用于返回所要求的视图的,在这个方法中有一个convertView参数,该参数就是用来加载数据时的参数。

ViewHolder并不是安卓的API,而是一种设计思想,就是设计一个静态类,在listView更新的时候,缓存一下,这样以后就不需要重新加载了。

当convertView为空时,将创建convertView并以findViewById的方式把对应的空间存储到viewHolder中,并调用convertView.setTag(viewHolder)存储该viewHolder,之后对viewHolder的各种资源进行配置;这样的话,如果之后需要再次加载这个view,直接从convertView.getTag取出来就可以用了,可以提高listView的效率

例子如下

    class  ViewHolder{  ImageView img;  TextView  sitekey;  TextView partname;  TextView price;  TextView value;  TextView quantity_sold;  TextView end_date;  TextView jiantou;  }  

getView

public View getView(int position, View convertView, ViewGroup parent) {  ViewHolder holder = new ViewHolder();  if(convertView==null){  convertView = inflater.inflate(R.layout.good_list_item, null, false);  holder.img = (ImageView) convertView.findViewById(R.id.img);  holder.sitekey = (TextView) convertView.findViewById(R.id.sitekey);  holder.partname = (TextView) convertView.findViewById(R.id.partname);  holder.price = (TextView) convertView.findViewById(R.id.price);  holder.value = (TextView) convertView.findViewById(R.id.value);  holder.quantity_sold = (TextView) convertView.findViewById(R.id.quantity_sold);  holder.end_date = (TextView) convertView.findViewById(R.id.end_date);  holder.jiantou = (TextView) convertView.findViewById(R.id.jiantou);  convertView.setTag(holder);  }else{  holder = (ViewHolder) convertView.getTag();  }  //设置holder  holder.img.setImageResource(R.drawable.ic_launcher);  holder.sitekey.setText(list.get(position).sitekey);  holder.partname.setText(list.get(position).partname);  holder.price.setText("$"+list.get(position).price);  holder.value.setText("$"+list.get(position).value);  holder.quantity_sold.setText("已售出:"+list.get(position).quantity_sold);  holder.end_date.setText("截止日期:"+list.get(position).end_date);  return convertView;  }  

参考:http://326301045.iteye.com/blog/1998419
附上Adapter加载原理(容器替换):
http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html

Android ViewHolder使用相关推荐

  1. Android ViewHolder模式示例

    现在,我们将对Android ListView的平滑滚动进行编码. 在上一篇文章中 ,我们试图了解带适配器的ListView的工作方式. 这次,一切将与性能有关. 我之所以单独发表这篇文章是因为有时很 ...

  2. android viewholder里面不执行控件_ViewHolder的MVVM实现

    1.前言 在App的开发中,列表,流式布局是最常用的UI元素.通常RecyclerView的ViewHolder会根据业务的需要,异步处理一些耗时操作,再根据处理后的结果进行UI的更新. 这种情况下, ...

  3. android ViewHolder的相关知识

    listView的优化方式 重用convertView viewHolder static class viewHolder 在列表里面有图片的情况下,监听滑动不加载图片 多个不同布局,可以创建不同的 ...

  4. android viewholder

    ViewHolder不是Android的开发API,而是一种设计方法,就是设计个静态类,缓存一下,省得Listview更新的时候,还要重新操作.      public View getView(in ...

  5. Android ViewHolder工具

    1 import android.util.SparseArray; 2 import android.view.View; 3 4 /** 5 * 封装了setTag()和getTag()方法 6 ...

  6. Android ViewHolder 优化 ListView

    ViewHolder 优化 ListView 参见这篇博客, 里面介绍了Android ListView 基础入门 简介以及深入优化 ViewHolder介绍 A ViewHolder object ...

  7. android viewholder静态,android – 静态ViewHolder并在使用RecyclerView时获取上下文

    我正在尝试使用回收器视图并处理单击事件.我已经阅读了在回收站视图项上处理onClick事件的各种方法,例如: >在视图持有者类本身内定义单击侦听器. >在onCreateViewHolde ...

  8. android viewHolder static 静态

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 不是静态内部类 会 持有 外部类的 引用.  就像经常自定义的 适配器 类 作为内部类 ...

  9. Android知识点及资料汇总(不断更新中)

    /// //版本:0.1 //主要内容:根据思维导图的知识点,对之前收藏夹的内容进行分类. /// 之前转载过一篇题目为<一张思维导图,告诉你Android新手如何快速入门>的文章,这篇文 ...

最新文章

  1. 覆盖(override)和重载(overload)
  2. Windows+Nginx+IIS做图片分布式存储详细步骤
  3. linux入门与常用指令
  4. Navicat连接sqlserver提示:未发现数据源名并且未指定默认驱动程序
  5. iphone双卡_打开这个5G选项后:iPhone 12支持用蜂窝数据下载iOS更新|ios|iphone|应用程序|wi-fi...
  6. java不同的包下相同的类名的问题与解决办法
  7. NTKO Weboffice打开文档格式错误的解决方案
  8. 入门STM32--怎么学习STM32
  9. 企业信息安全类证书有哪些?
  10. 冶金工程在计算机应用,冶金工程专业计算机应用能力分析
  11. 学院开展计算机基础知识比赛,信阳师范学院顺利举办第七届计算机基础知识决赛...
  12. workbench中施加预紧力进行模态分析
  13. AQS(AbstractQueuedSynchronizer)同步器
  14. status_breakpoint谷歌浏览器如何解决?
  15. php配置环境变量方法
  16. 【github】机器学习(Machine Learning)深度学习(Deep Learning)资料
  17. python创建表格怎么只能65536_python - 在Python和Excel 2010中使用Win32时如何克服65536 Excel行限制 - 堆栈内存溢出...
  18. 在linux系统中使用WoeUSB工具制作U盘启动盘
  19. 考研数据结构复试题目整理
  20. mcrypt php 加密解密,mcrypt启用 加密以及解密过程详细解析

热门文章

  1. 显卡可以考虑改名为算卡、算力卡
  2. Python之探索式数据分析
  3. 【新手教程】第二课:寻券记各个会员等级佣金以及升级条件!
  4. python应用程序无法正常启动0xc0000142_win7提示应用程序无法正常启动(0xc0000142)怎么办...
  5. [转载]复杂网络研究机构与大牛
  6. 为什么你的手机越来越不耐用了?
  7. ShellExecute, WinExec, CreateProcess
  8. 尼克和格莱尔玩报数游戏,尼克按1~x报数,格莱尔按1~y报数。两人同时开始,并以同样的速度报数,当两人都报了m个数时,统计出两人同时报相同数的次数。
  9. SELinux安全机制
  10. 移动应用广告的未来在哪里?