ViewHolder的简便写法

在Android项目中,我们经常会用到ViewHolder。通常我们会在Adapter里面自定义一个ViewHolder类,并加入我们期望复用的View,具体做法就不赘述了。 通常在处理ViewHolder时,我们遇到的最大挑战就是代码冗余,每一个Adapter里面我们都需要有这么一个ViewHolder。
今天在网上看到有人发明了一种更省事的写法,具体见下面代码:

public static <T extends View> T findViewById(View view, int id) {

    SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
    if (viewHolder == null) {
      viewHolder = new SparseArray<View>();
      view.setTag(viewHolder);
    }

    View childView = viewHolder.get(id);
    if (childView == null) {
      childView = view.findViewById(id);
      viewHolder.put(id, childView);
    }
    return (T) childView;
  }

这样一来,我们只需要在getView里面调用ViewHoler的findViewById方法即可获得我们需要的View。
突然觉得省事了好多,再也不用到处复制ViewHolder了。 绝对要赞一个!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值