package com.marshalchen.common.usefulModule.groupImages;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
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.marshalchen.common.R;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ImageGridAdapter extends BaseAdapter {
private TextCallback textcallback = null;
final String TAG = getClass().getSimpleName();
Activity act;
List<ImageItem> dataList;
Map<String, String> map = new HashMap<String, String>();
BitmapCache cache;
private Handler mHandler;
private int selectTotal = 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");
}
}
};
public static interface TextCallback {
public void onListen(int count);
}
public void setTextCallback(TextCallback listener) {
textcallback = listener;
}
public ImageGridAdapter(Activity act, List<ImageItem> list, Handler mHandler) {
this.act = act;
dataList = list;
cache = new BitmapCache();
this.mHandler = mHandler;
}
@Override
public int getCount() {
int count = 0;
if (dataList != null) {
count = dataList.size();
}
return count;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
class Holder {
private ImageView iv;
private ImageView selected;
private TextView text;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final Holder holder;
if (convertView == null) {
holder = new Holder();
convertView = View.inflate(act, R.layout.group_item_image_grid, null);
holder.iv = (ImageView) convertView.findViewById(R.id.image);
holder.selected = (ImageView) convertView
.findViewById(R.id.isselected);
holder.text = (TextView) convertView
.findViewById(R.id.item_image_grid_text);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
final ImageItem item = dataList.get(position);
holder.iv.setTag(item.imagePath);
cache.displayBmp(holder.iv, item.thumbnailPath, item.imagePath,
callback);
if (item.isSelected) {
holder.selected.setImageResource(R.drawable.icon_data_select);
holder.text.setBackgroundResource(R.drawable.icon_bgd_relatly_line);
} else {
holder.selected.setImageBitmap(null);
holder.text.setBackgroundColor(0x00000000);
}
holder.iv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String path = dataList.get(position).imagePath;
if ((Bimp.drr.size() + selectTotal) < 9) {
item.isSelected = !item.isSelected;
if (item.isSelected) {
holder.selected
.setImageResource(R.drawable.icon_data_select);
holder.text.setBackgroundResource(R.drawable.icon_bgd_relatly_line);
selectTotal++;
if (textcallback != null)
textcallback.onListen(selectTotal);
map.put(path, path);
} else if (!item.isSelected) {
holder.selected.setImageResource(-1);
holder.text.setBackgroundColor(0x00000000);
selectTotal--;
if (textcallback != null)
textcallback.onListen(selectTotal);
map.remove(path);
}
} else if ((Bimp.drr.size() + selectTotal) >= 9) {
if (item.isSelected == true) {
item.isSelected = !item.isSelected;
holder.selected.setImageResource(-1);
selectTotal--;
map.remove(path);
} else {
Message message = Message.obtain(mHandler, 0);
message.sendToTarget();
}
}
}
});
return convertView;
}
}