思路
利用getView()中contentView参数是用于对加载好的布局的缓存,将一个存放listview的item的ui控件的holder利用view.setTag()存放在该contentView的tag中,当contentView不为null时,直接取出holder更改ui控件的显示内容即可。
代码
ListView的Adapter
public class FruitAdapter extends ArrayAdapter<Fruit> {
private int resourceId;
public FruitAdapter(Context context, int resource, List<Fruit> fruitList) {
super(context, resource, fruitList);
resourceId = resource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Fruit fruit = getItem(position);
View view;
ViewHolder viewHolder;
if (convertView == null) {
view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);
viewHolder = new ViewHolder();
viewHolder.fruitImage = view.findViewById(R.id.fruit_image);
view