public class MyAdapter extends BaseAdapter { ...... private HashMap<Integer, View> hm = new HashMap<Integer, View>(); ...... @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (hm.get(position) == null) { convertView = View.inflate(context, R.layout.item, null); holder = new ViewHolder(); ...... convertView.setTag(holder); hm.put(position, convertView); } else { convertView = hm.get(position); holder = (ViewHolder) convertView.getTag(); } ...... return convertView; } class ViewHolder { ...... } }