package com.hyrt.ceiphone.adapter; import java.util.HashMap; import java.util.List; import com.hyrt.cei.application.CeiApplication; import com.hyrt.cei.util.AsyncImageLoader; import com.hyrt.cei.vo.ColumnEntry; import com.hyrt.cei.vo.ImageResourse; import com.hyrt.ceiphone.R; import android.app.Activity; import android.content.Context; 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; public class GridViewAdapter extends BaseAdapter { private int itemLayout; private LayoutInflater inflater; private List<ColumnEntry> columnEntries; private AsyncImageLoader asyncImageLoader; private GridView gv; private HashMap<String, Drawable> drawables = new HashMap<String, Drawable>(); public GridViewAdapter(Activity activity, int itemLayout,List<ColumnEntry> columnEntries, GridView gv) { this.itemLayout = itemLayout; this.columnEntries = columnEntries; this.gv = gv; inflater = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); asyncImageLoader = ((CeiApplication) (activity.getApplication())).asyncImageLoader; } public int getCount() { return columnEntries.size(); } public Object getItem(int position) { return Integer.valueOf(position); } public long getItemId(int position) { return position; } 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.serviceIcon = (ImageView) convertView.findViewById(R.id.main_service_icon); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if(columnEntries.size() != 0){ String imageUrl = columnEntries.get(position).getOperationImage(); holder.serviceIcon.setTag(imageUrl); if (!imageUrl.toLowerCase().contains("null") && drawables.containsKey(imageUrl)&& drawables.get(imageUrl) != null){ holder.serviceIcon.setImageDrawable(drawables.get(imageUrl)); }else{ ImageResourse imageResource = new ImageResourse(); imageResource.setIconUrl(imageUrl); imageResource.setIconId(columnEntries.get(position).getId()); imageResource.setIconTime(columnEntries.get(position).getIssueTime()); 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 serviceIcon; } }