package com.mogujie.tt.adapter.album; import java.util.List; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.mogujie.tt.R; import com.mogujie.tt.adapter.album.BitmapCache.ImageCallback; import com.mogujie.tt.log.Logger; /** * @Description 相册适配器 * @author Nana * @date 2014-5-9 */ public class ImageBucketAdapter extends BaseAdapter { private Activity act; private Logger logger = Logger.getLogger(ImageBucketAdapter.class); public static int selectedPosition = -1; // 图片集列表 List<ImageBucket> dataList; BitmapCache cache; ImageCallback callback = new ImageCallback() { @Override public void imageLoad(ImageView imageView, Bitmap bitmap, Object... params) { try { if (null != imageView && null != bitmap) { String url = (String) params[0]; if (null != url && url.equals((String) imageView.getTag())) { ((ImageView) imageView).setImageBitmap(bitmap); } else { logger.e("callback, bmp not match"); } } else { logger.e("callback, bmp null"); } } catch (Exception e) { logger.e(e.getMessage()); } } }; public ImageBucketAdapter(Activity act, List<ImageBucket> list) { this.act = act; dataList = list; cache = BitmapCache.getInstance(); } @Override public int getCount() { int count = 0; if (null != dataList) { count = dataList.size(); } return count; } @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int arg0) { return arg0; } public void setSelectedPosition(int position) { selectedPosition = position; } @Override public View getView(int position, View convertView, ViewGroup parent) { Holder holder = null; try { if (null == convertView) { holder = new Holder(); convertView = View.inflate(act, R.layout.tt_item_image_pick, null); holder.iv = (ImageView) convertView.findViewById(R.id.image); holder.name = (TextView) convertView.findViewById(R.id.name); holder.count = (TextView) convertView.findViewById(R.id.count); holder.albumArrow = (ImageView) convertView .findViewById(R.id.im_album_arrow); convertView.setTag(holder); } else { holder = (Holder) convertView.getTag(); } ImageBucket item = dataList.get(position); holder.count.setText("(" + item.count + ")"); String nameStr = item.bucketName; if (nameStr.length() > 14) { nameStr = nameStr.substring(0, 14) + "..."; } holder.name.setText(nameStr); if (item.imageList != null && item.imageList.size() > 0) { String thumbPath = item.imageList.get(0).getThumbnailPath(); String sourcePath = item.imageList.get(0).getImagePath(); holder.iv.setTag(sourcePath); Bitmap bmp = cache.getCacheBitmap(thumbPath, sourcePath); if (bmp != null) { holder.iv.setImageBitmap(bmp); } else { cache.displayBmp(holder.iv, thumbPath, sourcePath, callback); } } else { holder.iv.setImageBitmap(null); logger.e("no images in bucket " + item.bucketName); } if (position == selectedPosition) { convertView.setBackgroundResource(R.drawable.tt_album_item_sel_bk); holder.albumArrow.setImageResource(R.drawable.tt_album_arrow_sel); holder.name.setTextColor(Color.WHITE); holder.count.setTextColor(Color.WHITE); } else { convertView.setBackgroundColor(Color.WHITE); holder.albumArrow.setImageResource(R.drawable.tt_album_arrow); holder.name.setTextColor(Color.BLACK); holder.count.setTextColor(R.color.album_list_item_count_color); } return convertView; } catch (Exception e) { logger.e(e.getMessage()); return null; } } class Holder { private ImageView iv; private TextView name; private TextView count; private ImageView albumArrow; } }