ViewHolder vs HolderView

翻译 2013年12月03日 13:52:15

Adapters and recycling

究其原因,使用ViewHolder和HolderView是为了提高AdapterView的性能。Adapter通过使用AdapterView来循环(调用)View,这些View是AdapterView用来显示内容的。更多的信息请参阅这儿 。
ViewHolder模式简短解释的参考可以在这儿查看

HolderView

HolderView继承自某种View,in the example a GridLayout since that was what the layout was using before being replaced that with a “merge” tag. HolderView存储了所有视图的组件,就像ViewHolder一样来避免(频繁,昂贵的)通过findViewById()进行查找。 但是不像ViewHolder,当子View被请求时,ViewHolder有责任为它处理数据。这使得Adapter更小,更容易理解和维护。典型的getView方法看起来像这样:

@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
    HolderView holderView;
    // Important to not just null check, but rather to a instanceof
    // since we might get any subclass of view here.
    if (convertView instanceof HolderView) {
        holderView = (HolderView) convertView;
    } else {
        holderView = new HolderView(mContext);
    }
    holderView.bind(new Digit(i));

    return holderView;
}
同时,HolderViewd对象看起来应该像这样:

public class HolderView extends GridLayout {

    private TextView mDigitDigit;
    private String mDigitText;

    public HolderView(Context context, AttributeSet attrs) {
        super(context, attrs);
        View v = LayoutInflater.from(context).inflate(R.layout.list_detail, this);
        mDigitDigit = (TextView) v.findViewById(R.id.list_detail_digit);
        mDigitText = context.getResources().getString(R.string.list_detail_digit);
    }

    public void bind(Digit digit) {
        mDigitDigit.setText(String.format(mDigitText, digit));
    }
}
下面的连接是github上的例子项目,你可以看到两个分支,一个是ViewHolder,一个是HolderView
因此本质上两种方法解决相同的问题,非常的相似。主要的不同就是处理UI的责任从Adapter中移到了View中。


原文连接:http://www.jayway.com/2013/11/06/viewholder-vs-holderview/

参考连接:http://blog.chengyunfeng.com/?p=543


ViewHolder VS HolderView ?

ViewHolder 模式在 Android 中大家应该都不陌生了,特别是在 ListView 中通过 ViewHolder 来减少 findViewById 的调用和 类型的转换。 而 Hol...

HolderView 与 ViewHolder 优化App性能

HolderView 与 ViewHolder做Android的伙伴都不会陌生吧,都是为了提升ListView、gridView等这类View的adapter性能, 把多个属性封装到一个类中,也...
  • he90227
  • he90227
  • 2015年03月01日 10:18
  • 512

ViewHolder的应用

  • 2015年10月02日 08:41
  • 1.69MB
  • 下载

Android RecyclerView中ViewHolder的复用导致数据错乱解决办法

看图: 视觉效果、recyclerview的基本用法都不说了,超级简单,稍后看代码。 重点来说说item状态的保存问题,其实这个也不是什么新鲜问题,处理起来也不难,方法众多,有setTag的,...

ViewHolder

  • 2015年01月10日 12:03
  • 595B
  • 下载

ListView ,GridView 通用Adapter ViewHolder

  • 2015年11月09日 12:30
  • 3.75MB
  • 下载

listview加载性能优化ViewHolder

在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,...
  • JaCman
  • JaCman
  • 2011年12月20日 15:25
  • 48119
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ViewHolder vs HolderView
举报原因:
原因补充:

(最多只允许输入30个字)