package com.example.fei.yhb_20.adapter; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.util.DisplayMetrics; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.fei.yhb_20.ui.AlbumActivity; import com.example.fei.yhb_20.ui.ShowAllPhoto; import com.example.fei.yhb_20.utils.BitmapCache; import com.example.fei.yhb_20.utils.ImageItem; import com.example.fei.yhb_20.utils.Res; import java.util.ArrayList; /** * 这个是显示所有包含图片的文件夹的适配器 * * @author king * @QQ:595163260 * @version 2014年10月18日 下午11:49:44 */ public class FolderAdapter extends BaseAdapter { private Context mContext; private Intent mIntent; private DisplayMetrics dm; BitmapCache cache; final String TAG = getClass().getSimpleName(); public FolderAdapter(Context c) { cache = new BitmapCache(); init(c); } // 初始化 public void init(Context c) { mContext = c; mIntent = ((Activity) mContext).getIntent(); dm = new DisplayMetrics(); ((Activity) mContext).getWindowManager().getDefaultDisplay() .getMetrics(dm); } @Override public int getCount() { return AlbumActivity.contentList.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } BitmapCache.ImageCallback callback = new BitmapCache.ImageCallback() { @Override public void imageLoad(ImageView imageView, Bitmap bitmap, Object... params) { if (imageView != null && bitmap != null) { String url = (String) params[0]; if (url != null && url.equals((String) imageView.getTag())) { ((ImageView) imageView).setImageBitmap(bitmap); } else { Log.e(TAG, "callback, bmp not match"); } } else { Log.e(TAG, "callback, bmp null"); } } }; private class ViewHolder { // public ImageView backImage; // 封面 public ImageView imageView; public ImageView choose_back; // 文件夹名称 public TextView folderName; // 文件夹里面的图片数量 public TextView fileNum; } ViewHolder holder = null; @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate( Res.getLayoutID("plugin_camera_select_folder"), null); holder = new ViewHolder(); holder.backImage = (ImageView) convertView .findViewById(Res.getWidgetID("file_back")); holder.imageView = (ImageView) convertView .findViewById(Res.getWidgetID("file_image")); holder.choose_back = (ImageView) convertView .findViewById(Res.getWidgetID("choose_back")); holder.folderName = (TextView) convertView.findViewById(Res.getWidgetID("name")); holder.fileNum = (TextView) convertView.findViewById(Res.getWidgetID("filenum")); holder.imageView.setAdjustViewBounds(true); // LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,dipToPx(65)); // lp.setMargins(50, 0, 50,0); // holder.imageView.setLayoutParams(lp); holder.imageView.setScaleType(ImageView.ScaleType.FIT_XY); convertView.setTag(holder); } else holder = (ViewHolder) convertView.getTag(); String path; if (AlbumActivity.contentList.get(position).imageList != null) { //path = photoAbsolutePathList.get(position); //封面图片路径 path = AlbumActivity.contentList.get(position).imageList.get(0).imagePath; // 给folderName设置值为文件夹名称 //holder.folderName.setText(fileNameList.get(position)); holder.folderName.setText(AlbumActivity.contentList.get(position).bucketName); // 给fileNum设置文件夹内图片数量 //holder.fileNum.setText("" + fileNum.get(position)); holder.fileNum.setText("" + AlbumActivity.contentList.get(position).count); } else path = "android_hybrid_camera_default"; if (path.contains("android_hybrid_camera_default")) holder.imageView.setImageResource(Res.getDrawableID("plugin_camera_no_pictures")); else { // holder.imageView.setImageBitmap( AlbumActivity.contentList.get(position).imageList.get(0).getBitmap()); final ImageItem item = AlbumActivity.contentList.get(position).imageList.get(0); holder.imageView.setTag(item.imagePath); cache.displayBmp(holder.imageView, item.thumbnailPath, item.imagePath, callback); } // 为封面添加监听 holder.imageView.setOnClickListener(new ImageViewClickListener( position, mIntent,holder.choose_back)); return convertView; } // 为每一个文件夹构建的监听器 private class ImageViewClickListener implements OnClickListener { private int position; private Intent intent; private ImageView choose_back; public ImageViewClickListener(int position, Intent intent,ImageView choose_back) { this.position = position; this.intent = intent; this.choose_back = choose_back; } public void onClick(View v) { ShowAllPhoto.dataList = (ArrayList<ImageItem>) AlbumActivity.contentList.get(position).imageList; Intent intent = new Intent(); String folderName = AlbumActivity.contentList.get(position).bucketName; intent.putExtra("folderName", folderName); intent.setClass(mContext, ShowAllPhoto.class); mContext.startActivity(intent); choose_back.setVisibility(v.VISIBLE); } } public int dipToPx(int dip) { return (int) (dip * dm.density + 0.5f); } }