package org.carelife.creader.ui.adapter;
import java.util.List;
import org.carelife.creader.bean.BookBasicBean;
import org.carelife.creader.ui.component.TextViewVertical;
import org.carelife.creader.util.FileUtil;
import org.carelife.creader.util.ToastUtil;
import org.carelife.creader.R;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class BookGridAdapter extends BaseAdapter {
// ����Context
private Context mContext;
private GridViewHolder gridholder;
private List<BookBasicBean> dataList;
private Bitmap t_Bitmap;
int BOOK_WIDTH = 80;
int BOOK_HEIGH = 102;
FileUtil fm;
ToastUtil toast;
private SharedPreferences sp;
private int[] shelfPics = { R.drawable.shelf_left, R.drawable.shelf_mid,
R.drawable.shelf_right };
// public BookGridAdapter(Context c, List<Map<String, Object>> results) {
// mContext = c;
// this.data_list = results;
// fm = new FileUtil();
// sp = c.getSharedPreferences("sogounovel", 0);
// sp.edit();
// toast = ToastUtil.getInstance(c);
// }
public BookGridAdapter(Context c, List<BookBasicBean> results) {
mContext = c;
this.dataList = results;
fm = new FileUtil();
sp = c.getSharedPreferences("sogounovel", 0);
sp.edit();
toast = ToastUtil.getInstance(c);
}
// ��ȡͼƬ�ĸ���
public int getCount() {
return dataList.size();
}
// ��ȡͼƬ�ڿ��е�λ��
public Object getItem(int position) {
return position;
}
// ��ȡͼƬID
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = View.inflate(mContext, R.layout.bookgridviewitem,
null);
gridholder = new GridViewHolder();
gridholder.book_name = (TextViewVertical) convertView
.findViewById(R.id.bookgrid_name);
gridholder.book_pic = (ImageView) convertView
.findViewById(R.id.bookgrid_pic);
gridholder.book_pic_back = (ImageView) convertView
.findViewById(R.id.bookgrid_pic_backgroud);
gridholder.book_pic_update = (ImageView) convertView
.findViewById(R.id.bookgrid_pic_update);
gridholder.shelf_pic = (ImageView) convertView
.findViewById(R.id.bookgrid_shelf);
gridholder.name_bg = (RelativeLayout) convertView
.findViewById(R.id.bookgrid_namebg);
convertView.setTag(gridholder);
} else {
gridholder = (GridViewHolder) convertView.getTag();
}
String a = dataList.get(position).getBook_name().trim();
gridholder.book_pic_update.setVisibility(View.GONE);
if (a.equals("add_a_book")) {
gridholder.book_name.setText("");
gridholder.book_pic.setVisibility(View.INVISIBLE);
gridholder.book_pic_back.setVisibility(View.VISIBLE);
gridholder.book_pic_back.setImageResource(R.drawable.book_add);
gridholder.name_bg.setVisibility(View.GONE);
} else if (a.equals("_space_")) {
gridholder.book_name.setText("");
gridholder.name_bg.setVisibility(View.GONE);
gridholder.book_pic_back.setVisibility(View.GONE);
gridholder.book_pic.setVisibility(4);
} else {
gridholder.book_pic.setVisibility(0);
Bitmap bm = null;
try{
bm = BitmapFactory.decodeFile(dataList.get(position)
.getPic_path());
}catch(OutOfMemoryError e){
bm = null;
}
if (null != bm) {
// t_Bitmap = createBitmap(bm, BOOK_WIDTH, BOOK_HEIGH);
// if (null != data_list.get(position).get("is_update"))
// t_Bitmap = update_Bitmap(t_Bitmap);
// bm = update_Bitmap(bm);
if(dataList.get(position).getIs_update() == 1){
gridholder.book_pic_update.setVisibility(View.VISIBLE);
}else{
gridholder.book_pic_update.setVisibility(View.GONE);
}
gridholder.book_name.setText("");
gridholder.name_bg.setVisibility(View.GONE);
try{
gridholder.book_pic.setImageBitmap(bm);
gridholder.book_pic.setVisibility(View.VISIBLE);
gridholder.book_pic_back.setImageResource(R.drawable.main_book_bg);
}catch(Exception e){
gridholder.book_pic.setVisibility(View.INVISIBLE);
gridholder.book_pic_back.setImageResource(R.drawable.book_default);
}catch(OutOfMemoryError e1){
gridholder.book_pic.setVisibility(View.INVISIBLE);
gridholder.book_pic_back.setImageResource(R.drawable.book_default);
}
gridholder.book_pic_back.setVisibility(View.VISIBLE);
} else {
// if (null != data_list.get(position).get("is_update")) {
// t_Bitmap = update_Bitmap(BitmapFactory.decodeResource(
// mContext.getResources(), R.drawable.book_default));
// gridholder.book_pic.setImageBitmap(t_Bitmap);
// } else {
gridholder.book_name.setText(a);
gridholder.book_name.setVisibility(View.VISIBLE);
gridholder.name_bg.setVisibility(View.VISIBLE);
gridholder.book_pic_back.setImageResource(R.drawable.book_default);
gridholder.book_pic_back.setVisibility(View.VISIBLE);
gridholder.book_pic.setVisibility(View.INVISIBLE);
// }
}
}
gridholder.shelf_pic.setImageResource(shelfPics[position % 3]);
// gridholder.book_pic.setOnClickListener(new OnClickListener() {
//
// public void onClick(View v) {
//
// }
//
// });
//
// gridholder.book_pic.setOnLongClickListener(new OnLongClickListener()
// {
//
// public boolean onLongClick(View v) {
// return false;
// };
// });
return convertView;
}
public void updateData(List<BookBasicBean> data_list) {
this.dataList = data_list;
}
private Bitmap createBitmap(Bitmap pic, float w, float h) {
if (pic == null) {
return null;
}
Matrix matrix = new Matrix();
int w_temp = pic.getWidth();
int h_temp = pic.getHeight();
// System.out.println(w_temp+","+h_temp);
matrix.postScale(((float) 114 / w_temp), ((float) 151 / h_temp));
Bitmap book_pic_temp = Bitmap.createBitmap(pic, 0, 0, w_temp, h_temp,
matrix, true);
// create the new blank bitmap
Bitmap newb = Bitmap.createBitmap(127, 161, Bitmap.Config.ARGB_8888);// ����һ���µĺ�SRC���ȿ��һ����λͼ
Canvas cv = new Canvas(newb);
// draw top into
// cv.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(),
// R.drawable.bookshelf_book_top), 0, 0, null);// �� 0��0���꿪ʼ����top
// // draw left into
// cv.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(),
// R.drawable.bookshelf_book_left), 0, 7, null);// ��0,7����left
cv.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(),
R.drawable.book_backgroud), 0, 0, null);// ����
// draw book_pic
cv.drawBitmap(book_pic_temp, 2, 2, null);// ������
// save all clip
cv.save(Canvas.ALL_SAVE_FLAG);// ����
// store
cv.restore();// �洢
book_pic_temp.recycle();
matrix = new Matrix();
// System.out.println(w_temp+","+h_temp);
matrix.postScale(((float) w / 127), ((float) h / 161));
return Bitmap.createBitmap(newb, 0, 0, 127, 161, matrix, true);
}
private Bitmap update_Bitmap(Bitmap pic) {
Bitmap newb = Bitmap.createBitmap(pic.getWidth(), pic.getHeight(),
Bitmap.Config.ARGB_8888);// ����һ���µĺ�SRC���ȿ��һ����λͼ
Canvas cv = new Canvas(newb);
cv.drawBitmap(pic, 0, 0, null);
//�����±�ǩ
cv.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(),
R.drawable.gengxin), 10, 0, null);
cv.save(Canvas.ALL_SAVE_FLAG);
cv.restore();
return newb;
}
public class GridViewHolder {
private TextViewVertical book_name;
private ImageView book_pic;
private ImageView book_pic_back;
private ImageView book_pic_update;
private ImageView shelf_pic;
private RelativeLayout name_bg;
}
}