public class LocalCache {
//首先是从内存里面去读取,这里就不做阐述了,放到一个arrayList<Drawable>里面
ViewHolder holder;
private HashMap<Integer,Bitmap> imageCache;
public View getView(int position, View convertView, ViewGroup parent){
imageCache=new HashMap<Integer,Bitmap>();
if(convertView==null){
convertView=inflater.inflate(R.layout.main,null);
holder.photo=(ImageView)convertView.findViewById(R.id.iv);
convertView.setTag(holder);
}
else{
holder=(ViewHolder)convertView.getTag();
}
Bitmap current=imageCache.get(position);
if(current==null){
current=//从你存取图片的链表或者其他读取出来
imageCache.put(positon,current);
holder.photo.setImageBitmap(current);
}
else{
holder.photo.setImageBitmap(current);
}
return convertView;
}
static class ViewHolder{
ImageView photo;
}
}
//然后在后面的activity当中让你的imageCache仅缓存你想要的张数+正在显示的张数,比如我只想要12张+正在显示的
int start=confirmgridview.getFirstVisiblePosition()-6;
int end=confirmgridview.getLastVisiblePosition()+6;
//把你的ImageCache传递过来
Bitmap delBitmap
for(del=0,del<start;del++){
delBitmap=imageCache.get(del);
imageCache.delete(delBitmap);
delBitmap.recycle();
}
for(del=end+1;del<imageCache.length;del++){
delBitmap=imageCache.get(del);
imageCache.delete(delBitmap);
delBitmap.recycle();
}