Android ViewHolder使用
我们为了能在安卓有限的屏幕空间中显示更多的数据内容而需要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使用相关推荐
- Android ViewHolder模式示例
现在,我们将对Android ListView的平滑滚动进行编码. 在上一篇文章中 ,我们试图了解带适配器的ListView的工作方式. 这次,一切将与性能有关. 我之所以单独发表这篇文章是因为有时很 ...
- android viewholder里面不执行控件_ViewHolder的MVVM实现
1.前言 在App的开发中,列表,流式布局是最常用的UI元素.通常RecyclerView的ViewHolder会根据业务的需要,异步处理一些耗时操作,再根据处理后的结果进行UI的更新. 这种情况下, ...
- android ViewHolder的相关知识
listView的优化方式 重用convertView viewHolder static class viewHolder 在列表里面有图片的情况下,监听滑动不加载图片 多个不同布局,可以创建不同的 ...
- android viewholder
ViewHolder不是Android的开发API,而是一种设计方法,就是设计个静态类,缓存一下,省得Listview更新的时候,还要重新操作. public View getView(in ...
- Android ViewHolder工具
1 import android.util.SparseArray; 2 import android.view.View; 3 4 /** 5 * 封装了setTag()和getTag()方法 6 ...
- Android ViewHolder 优化 ListView
ViewHolder 优化 ListView 参见这篇博客, 里面介绍了Android ListView 基础入门 简介以及深入优化 ViewHolder介绍 A ViewHolder object ...
- android viewholder静态,android – 静态ViewHolder并在使用RecyclerView时获取上下文
我正在尝试使用回收器视图并处理单击事件.我已经阅读了在回收站视图项上处理onClick事件的各种方法,例如: >在视图持有者类本身内定义单击侦听器. >在onCreateViewHolde ...
- android viewHolder static 静态
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 不是静态内部类 会 持有 外部类的 引用. 就像经常自定义的 适配器 类 作为内部类 ...
- Android知识点及资料汇总(不断更新中)
/// //版本:0.1 //主要内容:根据思维导图的知识点,对之前收藏夹的内容进行分类. /// 之前转载过一篇题目为<一张思维导图,告诉你Android新手如何快速入门>的文章,这篇文 ...
最新文章
- 覆盖(override)和重载(overload)
- Windows+Nginx+IIS做图片分布式存储详细步骤
- linux入门与常用指令
- Navicat连接sqlserver提示:未发现数据源名并且未指定默认驱动程序
- iphone双卡_打开这个5G选项后:iPhone 12支持用蜂窝数据下载iOS更新|ios|iphone|应用程序|wi-fi...
- java不同的包下相同的类名的问题与解决办法
- NTKO Weboffice打开文档格式错误的解决方案
- 入门STM32--怎么学习STM32
- 企业信息安全类证书有哪些?
- 冶金工程在计算机应用,冶金工程专业计算机应用能力分析
- 学院开展计算机基础知识比赛,信阳师范学院顺利举办第七届计算机基础知识决赛...
- workbench中施加预紧力进行模态分析
- AQS(AbstractQueuedSynchronizer)同步器
- status_breakpoint谷歌浏览器如何解决?
- php配置环境变量方法
- 【github】机器学习(Machine Learning)深度学习(Deep Learning)资料
- python创建表格怎么只能65536_python - 在Python和Excel 2010中使用Win32时如何克服65536 Excel行限制 - 堆栈内存溢出...
- 在linux系统中使用WoeUSB工具制作U盘启动盘
- 考研数据结构复试题目整理
- mcrypt php 加密解密,mcrypt启用 加密以及解密过程详细解析
热门文章
- 显卡可以考虑改名为算卡、算力卡
- Python之探索式数据分析
- 【新手教程】第二课:寻券记各个会员等级佣金以及升级条件!
- python应用程序无法正常启动0xc0000142_win7提示应用程序无法正常启动(0xc0000142)怎么办...
- [转载]复杂网络研究机构与大牛
- 为什么你的手机越来越不耐用了?
- ShellExecute, WinExec, CreateProcess
- 尼克和格莱尔玩报数游戏,尼克按1~x报数,格莱尔按1~y报数。两人同时开始,并以同样的速度报数,当两人都报了m个数时,统计出两人同时报相同数的次数。
- SELinux安全机制
- 移动应用广告的未来在哪里?