为什么用使用viewHolder?
//无需再次新建新控件对象,这就是使用viewholder的好处,把控件实例缓存起来,每个item在渲染时只会使用一个控件对象修改里面的内容,返回新的item view
//而不是重复新建控件对象
package com.example.test;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class FruitAdapter extends ArrayAdapter {
private int resourceId;
public FruitAdapter(Context context, int resource, List<Fruit> dataes) {
super(context, resource, dataes);
this.resourceId=resource;
}
//
class ViewHolder{
public ImageView imageView;
public TextView textView;
}
@Override //这玩意遍历数据返回界面的
public View getView(int position,View convertView, ViewGroup parent) {
Fruit fruit = (Fruit) getItem(position);
View view;//他可能从con||new
ViewHolder viewHolder=new ViewHolder();
if(convertView==null){//new
//加载布局
view=LayoutInflater.from(getContext()).inflate(this.resourceId,parent,false);
viewHolder.imageView=view.findViewById(R.id.fruit_image);
viewHolder.textView=view.findViewById(R.id.text_view);
view.setTag(viewHolder);
}else{//has view
view=convertView;
//把缓存的控件取出来
viewHolder= (ViewHolder) view.getTag();
}
//无需再次新建新控件对象,这就是使用viewholder的好处,把控件实例缓存起来,每个item在渲染时只会使用一个控件对象修改里面的内容
//而不是重复新建控件对象
viewHolder.imageView.setImageResource(fruit.getImageId());
viewHolder.textView.setText(fruit.getName());
return view;
}
}