import android.util.SparseArray;
import android.view.View; /**
* 封装了setTag()和getTag()方法
* 封装了findViewById()方法
* ViewHolder为ListView的每个条目打上tag,
* 这个tag是一个数组对象,里面存储每个条目所包含的子控件对象,key为资源id
* 当listview滑出顶部时,最上面的条目(convertView)被回收
* 最下面需要显示的条目就不需要再用父容器去找子控件(耗时操作),
* 而是直接取得父容器的tag,在tag中获取到子控件对象
*
*
*/
public class ViewHolder {
/**
*
*
*
* @param view
* 控件父容器对象
* @param id
* 控件id
* @return 控件对象
*/
@SuppressWarnings("unchecked")
public static <T extends View> T get(View view, int id) {
// 如果父容器不为空,获取父容器的tag,为数组初始化............
SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
if (viewHolder == null) {
// 如果数组为空,新建数组
viewHolder = new SparseArray<View>();
// 将父容器打上数组的tag...............
view.setTag(viewHolder);
}
// 根据控件的资源id在数组中找控件
View childView = viewHolder.get(id);
// 如果控件为空
if (childView == null) {
// 在父容器找
childView = view.findViewById(id);
// 将控件的资源id和控件对象存到数组中
viewHolder.put(id, childView);
}
// 返回子控件
return (T) childView;
}
}

Android ViewHolder工具的更多相关文章

  1. 最新版Android开发工具

    最新版Android开发工具 JUN 27TH, 2014 Android Tools ADT Bundle ADT Bundle包含了Eclipse.ADT插件和SDK Tools,是已经集成好的I ...

  2. 腾讯优测优分享 | Android性能测试工具化实现

    腾讯优测专业的移动云测试平台,自动化测试提供性能测试数据,云真机实时输出性能数据,让测试更简单! 1.Android性能测试介绍 提到Android性能测试,我们总免不了俗地要首先介绍下Android ...

  3. Android开发工具全面转向Android Studio(3)——AS project/module的目录结构(与Eclipse对比)

    如果AS完全还没摸懂的,建议先看下Android开发工具全面转向Android Studio(2)——AS project/module的CRUD. 注:以下以Windows平台为标准,AS以目前最新 ...

  4. Android开发工具全面转向Android Studio(2)——AS project/module的CRUD

    本文有些地方可能需要衔接Android开发工具全面转向Android Studio(1)——准备开发环境,读起来效果会更好. 这个世界很奇妙,所有的东西离不开CRUD,即增删改查.即使人本身也遵循这个 ...

  5. Android性能测试工具(一)之Emmagee

    Android性能测试工具(一) 之Emmagee Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具. 支持SDK:Android2.2以及以上版本 Emm ...

  6. 53. Android常用工具类

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefer ...

  7. android 破解工具

    来记录一下本人在平时工作中使用的android上的破解工具 静态破解: apktool: apk包 -> dex dex2jar和enjarify(google官方出品): dex->ja ...

  8. Android 常见工具类封装

    1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...

  9. 工具推荐:2016年最佳的15款Android黑客工具

    黑客技术,曾被认为是专家的专有领域,但随着技术的崛起和移动安全领域的进步,黑客技术已经变得越来越普遍.随着人们越来越依赖于智能手机和其它的便携式设备来完成他们的日常活动,我们有必要了解一些Androi ...

随机推荐

  1. JSTL标签库简介

    核心标签库 http://java.sun.com/jsp/jstl/core <c:catch>,<c:url>的使用 <!-- 捕获异常 --> <c:c ...

  2. mysql 时间函数

    select UNIX_TIMESTAMP(Now());#获取unix时间戳1436430994 ::"时间形式

  3. tomcat Host及Context 配置

    参考资料: 一.Host配置 对一个Tomcat,可以配置多台虚拟主机.简单地说,就是让一台服务器可以对应多个主机名.这在Tomcat中称之为Host.要求每个Host的Name必须唯一. 配置方法: ...

  4. ThinkPHP3.2 行为扩展以及插件机制介绍!

    首先行为扩展这个概念是TP架构的核心组成之一,关于行为的解释我就粗略的概括一下吧:TP在从接受到HTTP请求到最终将视图输出,期间经历的很多步骤,这些步骤大家可以在http://document.th ...

  5. [转载]sed 简明教程

    文章转载自酷壳 – CoolShell.cn,作者:陈皓,地址http://coolshell.cn/articles/9104.html awk于1977年出生,今年36岁本命年,sed比awk大2 ...

  6. Android-深入理解android自定义属性(AttributeSet,TypedArray)

    属性 自定义属性,首先要定义出来属性,我们新建一个attrs.xml: <?xml version="1.0" encoding="utf-8"?> ...

  7. ajax原理,验证码生成原理

    什么是ajax AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML 指一种创建交互式网页应用的网页开发技术.   不是指一种单一的 ...

  8. CrtCtl (客户端认证的证书、私钥)的控制

    crt (证书文件) 编辑 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 客户端认证的证书.私钥. 中文名 crt 性    质 证书文件 类    型 客户端认证的证书. ...

  9. We7<001>--We7 CMS之报错: HTTP 错误 404.0 - Not Found 您要找的资源已被删除、已更名或暂时不可用。

    根据教程--http://wenku.baidu.com/link?url=8_Jcl0TY-n1RPWRBzfvrFZNrik0YIrqJAE_IFbNk-ibqLA7kZIkOu1efaYvmGr ...

  10. java的一段对象数据类型映射的代码

    try { List<GateMetaPO> listGateInfoPO = majorGateReaderService.queryForAggregateBy( chapter); ...