package org.carelife.creader.ui.adapter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.carelife.creader.util.AsynImageLoaderUtil;
import org.carelife.creader.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class DetailGridAdapter extends BaseAdapter {
private Context mContext;
private GridViewHolder gridholder;
private List<Map<String, String>> imageTitleMap;
private HashMap<String, Bitmap> imageCache = new HashMap<String, Bitmap>();
private HashMap<String, ImageView> imageViews = new HashMap<String, ImageView>();
final Handler handler = new Handler() {
public void handleMessage(Message message) {
switch (message.what) {
case 0:
if (message.obj != null) {
String url = (String) message.obj;
imageViews.get(url).setImageBitmap(imageCache.get(url));
}
break;
case 1:
if (message.obj != null) {
String url = (String) message.obj;
imageViews.get(url).setImageBitmap(imageCache.get(url));
}
break;
default:
break;
}
}
};
public DetailGridAdapter(Context c, List<Map<String, String>> list_data) {
mContext = c;
imageTitleMap = list_data;
}
public int getCount() {
return imageTitleMap.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = View
.inflate(mContext, R.layout.bookdetailother, null);
gridholder = new GridViewHolder();
gridholder.book_name = (TextView) convertView
.findViewById(R.id.bookdetailother_title);
gridholder.book_pic = (ImageView) convertView
.findViewById(R.id.bookdetailother_pic);
convertView.setTag(gridholder);
} else {
gridholder = (GridViewHolder) convertView.getTag();
}
String a = imageTitleMap.get(position).get("title").toString().trim();
gridholder.book_name.setText(a);
if (null != imageTitleMap.get(position).get("pic")) {
final String pic_url = imageTitleMap.get(position).get("pic");
imageViews.put(pic_url, gridholder.book_pic);
gridholder.book_pic.setImageResource(R.drawable.book_default);
new Thread() {
public void run() {
if (imageCache.containsKey(pic_url)) {
if (imageCache.get(pic_url) != null) {
Message message = handler.obtainMessage(1, pic_url);
handler.sendMessage(message);
return;
}
}
Bitmap bitmap = AsynImageLoaderUtil
.loadImageFromNet(pic_url);
if (bitmap != null) {
imageCache.put(pic_url, bitmap);
} else {
return;
}
Message message = handler.obtainMessage(0, pic_url);
handler.sendMessage(message);
}
}.start();
// Bitmap bitmap = AsynImageLoaderUtil.loadImageFromNet(imageTitleMap
// .get(position).get("pic"));
// if (bitmap != null) {
// gridholder.book_pic.setImageBitmap(bitmap);
// } else {
// gridholder.book_pic.setImageResource(R.drawable.cover_ebk);
// }
} else {
gridholder.book_pic.setImageResource(R.drawable.book_default);
}
return convertView;
}
public class GridViewHolder {
private TextView book_name;
private ImageView book_pic;
}
}