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.util.AsyncImageLoader; import com.hyrt.cei.vo.Courseware; import com.hyrt.cei.vo.ImageResourse; import android.app.Activity; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.TextView; public class PhoneStudyGridAdapter extends BaseAdapter { private int itemLayout; private LayoutInflater inflater; private List<Courseware> coursewares; private AsyncImageLoader asyncImageLoader; private GridView gv; private HashMap<String, Drawable> drawables = new HashMap<String, Drawable>(); public PhoneStudyGridAdapter(Activity activity, int itemLayout, List<Courseware> coursewares, GridView gv) { this.itemLayout = itemLayout; this.coursewares = coursewares; this.gv = gv; inflater = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); asyncImageLoader = ((CeiApplication) (activity.getApplication())).asyncImageLoader; } public int getCount() { return coursewares.size(); } public Object getItem(int position) { return Integer.valueOf(position); } public long getItemId(int position) { return position; } public void clearBitmaps() { Iterator<String> iterator = drawables.keySet().iterator(); while (iterator.hasNext()) { String path = iterator.next(); Drawable drawable = drawables.get(path); if (((BitmapDrawable) drawable) != null) ((BitmapDrawable) drawable).getBitmap().recycle(); drawable = null; } } public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = inflater.inflate(itemLayout, null); holder.courseIcon = (ImageView) convertView .findViewById(R.id.phone_study_gird_item_pic); holder.tv1 = (TextView) convertView .findViewById(R.id.phone_study_gird_item_tv1); holder.tv2 = (TextView) convertView .findViewById(R.id.phone_study_gird_item_tv3); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (coursewares.size() != 0) { String imageUrl = coursewares.get(position).getSmallPath(); holder.tv1 .setText(coursewares.get(position).getName().length() > 10 ? coursewares .get(position).getName().substring(0, 10) + "..." : coursewares.get(position).getName()); holder.tv2.setText(coursewares.get(position).getTeacherName() + " " + coursewares.get(position).getProTime()); holder.courseIcon.setTag(imageUrl); if (!imageUrl.toLowerCase().contains("null") && drawables.containsKey(imageUrl) && drawables.get(imageUrl) != null) { holder.courseIcon.setImageDrawable(drawables.get(imageUrl)); } else { ImageResourse imageResource = new ImageResourse(); imageResource.setIconUrl(imageUrl); imageResource.setIconId(coursewares.get(position).getClassId()); asyncImageLoader.loadDrawable(imageResource, new AsyncImageLoader.ImageCallback() { @Override public void imageLoaded(Drawable drawable, String path) { ImageView imageView = (ImageView) gv .findViewWithTag(path); if (drawable != null && imageView != null) { imageView.setImageDrawable(drawable); drawables.put(path, drawable); } } }); } } return convertView; } class ViewHolder { ImageView courseIcon; TextView tv1; TextView tv2; } }