android中使用ListView时在getview方法中需要重用convertView,用来提高系统性能。目前有两种方式:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
View view;
if(convertView == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.list_item, null);
holder.name = (TextView) view.findViewById(R.id.textView1);
view.setTag(holder);
}else {
view = convertView ;
}
holder = (ViewHolder) view.getTag();
holder.name.setText(list.get(position));
return view;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.list_item, null);
holder.name = (TextView) convertView.findViewById(R.id.textView1);
convertView.setTag(holder);
}
holder = (ViewHolder) convertView.getTag();
holder.name.setText(list.get(position));
return convertView;
}
这两种方式都能达到重用convertView的目的, 唯一的区别是第一种多了一层对view的引用。
有人在做图片浏览器的时候,发现第一种的性能会比第二种稍微好一点,具体什么原因,我死活都想不明白。哪位大侠可以指点迷津?