android中使用ListView   ExpandableListView  数据适配器adapter很多都是自己定义,自己定义数据适配器时,要重写getView。重写getView为了不让每次调用时都去分配相关显示控件的空间,用ViewHolder 可以提高性能。在此对ViewHolder 的使用做个记录。

1、概述

ViewHolder 是自己定义的一个内部类。在使用时主要用到了adapter本身的缓存机制,和setTag  getTag 两个函数

2、代码片

private class ViewHolder {
ImageView image;
TextView text;
TextView text2;
Button mButton;

TextView txt_value1;
TextView txt_value2;
}

@Override
public View getView(final int position, View view, ViewGroup viewGroup) {

ViewHolder viewHolder = null;

if (view == null) {
view = layoutInflater.inflate(R.layout.item_image_button_2txt, null);
viewHolder = new ViewHolder();
viewHolder.image = (ImageView) view.findViewById(R.id.imageView1);
viewHolder.text = (TextView) view.findViewById(R.id.textView1);
viewHolder.text2 = (TextView) view.findViewById(R.id.textView2);
viewHolder.mButton = (Button) view.findViewById(R.id.button1);
viewHolder.txt_value1 = (TextView) view.findViewById(R.id.value1);
viewHolder.txt_value2 = (TextView) view.findViewById(R.id.value2);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}

//添加要做的显示业务

}

3、note:在使用ViewHolder时不要忘记了先setTag  然后才有getTag 不然肯定是报空指针

android ViewHolder 使用的更多相关文章

  1. Android ViewHolder工具

    import android.util.SparseArray; import android.view.View; /** * 封装了setTag()和getTag()方法 * 封装了findVie ...

  2. Android——ViewHolder的作用与用法

    转载至:https://www.cnblogs.com/wugu-ren/p/6106379.htmlViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重 ...

  3. android:ViewHolder模式

    ViewHolder holder = null; if(convertView == null){ convertView = mInflater.inflate(R.layout.xxx null ...

  4. android viewHolder static 静态

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

  5. Android ViewHolder的作用与用法

    就是一个持有者的类,他里面一般没有方法,只有属性,作用就是一个临时的储存器,把你getView方法中每次返回的View存起来,可以下次再用.这样做的好处就是不必每次都到布局文件中去拿到你的View,提 ...

  6. Android ViewHolder

    Adapter :适配器,因为 ListView 是一个 View ,不能添加子项,因此在呈现数据的时候就需要某种工具将数据呈现在 ListView 上,而 Adapter 就能充当此角色.常用的 A ...

  7. 【Android】11.0 UI开发(二)——列表控件ListView的简单实现1

    ************************ 转载请注明出处:https://www.cnblogs.com/xiaofu007/p/10342462.html ***************** ...

  8. Android知识——ViewHolder的作用与用法

    ViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能.在android开发中Listview是一个很重要的组件,它以列表的形式 ...

  9. [Android]对BaseAdapter中ViewHolder编写简化

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3642849.html 在Android项目中,经常都会用到Li ...

随机推荐

  1. MySQL安全问题

    使用MySQL,安全问题不能不注意.以下是MySQL提示的23个注意事项:1.如果客户端和服务器端的连接需要跨越并通过不可信任的网络,那么就需要使用SSH隧道来加密该连接的通信.2.用set pass ...

  2. scrollTop,offset().top

    1.scrollTop是指滚动条滚动的距离 如果没有出现滚动条,则距离为0 css: <style type="text/css"> *{ margin: 0; pad ...

  3. thinkPHP中服务器端的验证

    <?php class UserModel extends Model{ //user是表的名称 必须以表名开始,继承Model类 protected $_validate=array( //a ...

  4. 通过实例深入理解lec和yacc

    本框架是一个lex/yacc完整的示例,包括详细的注释,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行.大部分框架已经搭好了,你只要稍加扩展就可以 ...

  5. delphi 文件搜索,遍历所有子目录

    function ListFiles(path: string): TStringList; var SearchRec: TSearchRec; found: integer; begin resu ...

  6. HttpContext.Current.Cache 过期时间

    原文:HttpContext.Current.Cache 过期时间 为了更快的读取数据,我们一般会把常用到的数据加载到Cache中 在.NET中,Cache的存在可以依赖多中方式,主要用到HttpCo ...

  7. cnn softmax regression bp求导

    内容来自ufldl,代码参考自tornadomeet的cnnCost.m 1.Forward Propagation convolvedFeatures = cnnConvolve(filterDim ...

  8. Java主线程等待子线程、线程池

    public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...

  9. POJ1325 Machine Schedule 【二分图最小顶点覆盖】

    Machine Schedule Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11958   Accepted: 5094 ...

  10. ruby中输入命令行编译sass(ruby小白)

    Ruby(或cmd中)输入命令行编译sass步骤如下: (1)举例而言:首先在F盘下建立一个总文件夹,比如test文件夹:其次在该文件夹下建立html,images,js,sass等文件夹. (2)在 ...