package com.hyrt.cei.adapter; import java.util.HashMap; import java.util.Iterator; import java.util.List; import com.hyrt.cei.R; import com.hyrt.cei.application.CeiApplication; import com.hyrt.cei.ui.econdata.EconDataMain; import com.hyrt.cei.util.AsyncImageLoader; import com.hyrt.cei.util.AsyncImageLoader.ImageCallback; import com.hyrt.cei.vo.ImageResourse; import com.hyrt.cei.vo.New; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; public class EconImageAdapter extends BaseAdapter { private EconDataMain mContext; private List<New> data; public HashMap<Integer, Drawable> drawables = new HashMap<Integer, Drawable>(); private AsyncImageLoader asyncImageLoader; private Gallery gallery; public EconImageAdapter(EconDataMain c,List<New> data,Gallery gallery,ImageView[] imageViews) { mContext = c; this.data=data; this.gallery=gallery; asyncImageLoader = ((CeiApplication) c.getApplication()).asyncImageLoader; } public int getCount() { return Integer.MAX_VALUE; } public Object getItem(int position) { return data.get(position%5); } public long getItemId(int position) { return position; } public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = new ImageView(mContext); } convertView.setTag(data.get(position%5).getPpath()); convertView.setBackgroundResource(R.drawable.econ_data_big_banner); if (drawables.containsKey(Integer.valueOf(position%5)) && drawables.get(Integer.valueOf(position%5)) != null) { convertView.setBackgroundDrawable(drawables.get(Integer.valueOf(position%5))); }else{ ImageResourse imageResource = new ImageResourse(); imageResource.setIconUrl(data.get(position%5).getPpath()); imageResource.setIconId(data.get(position%5).getId()); imageResource.setIconTime(data.get(position%5).getTime()); asyncImageLoader.loadDrawable(imageResource, new ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { ImageView img = (ImageView) gallery.findViewWithTag(data .get(position%5).getPpath()); if (img != null && imageDrawable != null) { img.setBackgroundDrawable(imageDrawable); drawables.put(Integer.valueOf(position%5), imageDrawable); Log.i("view", position%5 + "aic"); } } }); } return convertView; } public void clearBitmaps(){ Iterator<Integer> iterator = drawables.keySet().iterator(); while(iterator.hasNext()){ Integer path = iterator.next(); Drawable drawable = drawables.get(path); if(((BitmapDrawable)drawable) != null) ((BitmapDrawable)drawable).getBitmap().recycle(); drawable = null; } } }