package com.example.fei.yhb_20.adapter; import android.app.Activity; import android.content.Context; 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.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.ToggleButton; 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:35 */ public class AlbumGridViewAdapter extends BaseAdapter{ final String TAG = getClass().getSimpleName(); private Context mContext; private ArrayList<ImageItem> dataList; private ArrayList<ImageItem> selectedDataList; private DisplayMetrics dm; BitmapCache cache; public AlbumGridViewAdapter(Context c, ArrayList<ImageItem> dataList, ArrayList<ImageItem> selectedDataList) { mContext = c; cache = new BitmapCache(); this.dataList = dataList; this.selectedDataList = selectedDataList; dm = new DisplayMetrics(); ((Activity) mContext).getWindowManager().getDefaultDisplay() .getMetrics(dm); } public int getCount() { return dataList.size(); } public Object getItem(int position) { return dataList.get(position); } public long getItemId(int position) { return 0; } 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 imageView; public ToggleButton toggleButton; public Button choosetoggle; public TextView textView; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); convertView = LayoutInflater.from(mContext).inflate( Res.getLayoutID("plugin_camera_select_imageview"), parent, false); viewHolder.imageView = (ImageView) convertView .findViewById(Res.getWidgetID("image_view")); viewHolder.toggleButton = (ToggleButton) convertView .findViewById(Res.getWidgetID("toggle_button")); viewHolder.choosetoggle = (Button) convertView .findViewById(Res.getWidgetID("choosedbt")); // RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,dipToPx(65)); // lp.setMargins(50, 0, 50,0); // viewHolder.imageView.setLayoutParams(lp); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } String path; if (dataList != null && dataList.size() > position) path = dataList.get(position).imagePath; else path = "camera_default"; if (path.contains("camera_default")) { viewHolder.imageView.setImageResource(Res.getDrawableID("plugin_camera_no_pictures")); } else { // ImageManager2.from(mContext).displayImage(viewHolder.imageView, // path, Res.getDrawableID("plugin_camera_camera_default"), 100, 100); final ImageItem item = dataList.get(position); viewHolder.imageView.setTag(item.imagePath); cache.displayBmp(viewHolder.imageView, item.thumbnailPath, item.imagePath, callback); } viewHolder.toggleButton.setTag(position); viewHolder.choosetoggle.setTag(position); viewHolder.toggleButton.setOnClickListener(new ToggleClickListener(viewHolder.choosetoggle)); if (selectedDataList.contains(dataList.get(position))) { viewHolder.toggleButton.setChecked(true); viewHolder.choosetoggle.setVisibility(View.VISIBLE); } else { viewHolder.toggleButton.setChecked(false); viewHolder.choosetoggle.setVisibility(View.GONE); } return convertView; } public int dipToPx(int dip) { return (int) (dip * dm.density + 0.5f); } private class ToggleClickListener implements OnClickListener{ Button chooseBt; public ToggleClickListener(Button choosebt){ this.chooseBt = choosebt; } @Override public void onClick(View view) { if (view instanceof ToggleButton) { ToggleButton toggleButton = (ToggleButton) view; int position = (Integer) toggleButton.getTag(); if (dataList != null && mOnItemClickListener != null && position < dataList.size()) { mOnItemClickListener.onItemClick(toggleButton, position, toggleButton.isChecked(),chooseBt); } } } } private OnItemClickListener mOnItemClickListener; public void setOnItemClickListener(OnItemClickListener l) { mOnItemClickListener = l; } public interface OnItemClickListener { public void onItemClick(ToggleButton view, int position, boolean isChecked, Button chooseBt); } }