ViewHolder最新建法,所有的只需要一个ViewHolder讨论

找到组织 发布于 2014/01/20 12:12
阅读 332
收藏 1

今天看到网上有人说Viewholder创建的时候很麻烦,因为要没创建一个layout都需要创建一个ViewHolder基本上全是一个模式repeat。。。然后他就做了一种新的方式说是能一次创建多次使用(听着想VM啊)但是我看了一下代码大概的代码是这样的

adapter中:

@Override

public View getView(int position, View convertView, ViewGroup parent) {


if(convertView== null) {


convertView= LayoutInflater.from(context).inflate(R.layout.item, parent, false);

}

TextView name= (TextView) ViewHolder.getView(convertView, R.id.name);

name.setText(appProcesses.get(position).pid+ "");

return convertView;

}

VIewHolder中:

public static View getView(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 childView;

}

从这个代码中可以看到没生成一条记录的时候会调用n次ViewHolder,那其实每n次调用Viewholder的时候都会重新生成一个viewHolder(数组)的实例,那其实就相当于你并没缓存之前读到的XMl的VIew实例,所以我觉得这种做法是不行的,并没有达到开始的初中。大家看呢。只是个人意见。

加载中
返回顶部
顶部