Android: 适配器中的 viewholder 的作用

10 篇文章 0 订阅

首先我们使用ViewHolder 就是为了在RecyclerView 滚动时设置值的

在我们使用ListView或者RecyclerView时, 当有大量的数据需要加载的时候,会占据大量内存,影响性能,这时候就需要按需填充并重新使用view来减少对象的创建。

静态类ViewHolder: 作用就是减少不必要的findViewById, 然后将底下的控件引用存在ViewHolder里面, 再在View.setTag(holder)把它放在view 里面, 这样一来下次就可以直接取了

convertView中的TAG:
Tag从本质上来讲是就是相关联的view的额外的信息。它们经常用来存储一些view的数据,这样做非常方便而不用存入另外的单独结构。
setTag方法:( 例如button1.setTag(1) ) 他是给View对象的一个标签。标签可以是任何内容,我们这里把他设置成了一个对象,因为我们是把vlist2.xml的元素抽象出来成为一个类ViewHolder,用了setTag,这个标签就是ViewHolder实例化后对象的一个属性。我们之后对于ViewHolder实例化的对象holder的操作,都会因为java的引用机制而一直存活并改变convertView的内容,而不是每次都是去new一个, 把重加载换做重用, 提升性能

......
       button1.setTag(1);
       button2.setTag(2);
       button3.setTag(3);

       button1.setOnClickListener(this);

    }

    @Override

    public void onClick(View v) {

       int tag = (Integer) v.getTag();

       switch (tag) {

       case 1: {

           Toast.makeText(this, "button1", Toast.LENGTH_LONG).show();

           break;

       }
       case 2: {

           Toast.makeText(this, "button2", Toast.LENGTH_LONG).show();

           break;

       }
       case 3: {

           Toast.makeText(this, "button3", Toast.LENGTH_LONG).show();

           break;

       }
        default: {

           break;

       }

}
......

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值