package com.umeng.comm.ui.imagepicker.widgets;
import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import com.umeng.comm.core.imageloader.ImgDisplayOption;
import com.umeng.comm.core.sdkmanager.ImageLoaderManager;
import com.umeng.comm.core.utils.ResFinder;
import com.umeng.comm.ui.imagepicker.model.PhotoModel;
/**
* 图片Item ViewHolder
*/
public class PhotoItemViewHolder implements OnCheckedChangeListener,
OnLongClickListener {
private ImageView mPhotoImageView;
private CheckBox mPhotoCheckBox;
private onPhotoItemCheckedListener listener;
private PhotoModel mPhotoModel;
private boolean isCheckAll;
private onItemClickListener mItemClickListener;
private int position;
View mRootView;
Context mContext;
private PhotoItemViewHolder(Context context) {
mContext = context;
}
public PhotoItemViewHolder(Context context, ViewGroup parent,
onPhotoItemCheckedListener listener) {
this(context);
mRootView = LayoutInflater.from(context).inflate(
ResFinder.getLayout("umeng_comm_imagepicker_photo_item"), parent,
false);
this.listener = listener;
mRootView.setDrawingCacheEnabled(false);
mRootView.setOnLongClickListener(this);
mPhotoImageView = (ImageView) mRootView.findViewById(ResFinder
.getId("umeng_comm_iv_photo_lpsi"));
mPhotoCheckBox = (CheckBox) mRootView.findViewById(ResFinder
.getId("umeng_comm_cb_photo_lpsi"));
mPhotoCheckBox.setOnCheckedChangeListener(this); // CheckBox的监听器
}
public View getItemView() {
return mRootView;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!isCheckAll) {
listener.onCheckedChanged(this, mPhotoModel, isChecked);
}
}
public void updatePhotoItemState(boolean isChecked) {
if (isChecked) {
setDrawingable();
mPhotoImageView.setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
} else {
mPhotoImageView.clearColorFilter();
}
mPhotoCheckBox.setChecked(isChecked);
mPhotoModel.setChecked(isChecked);
}
public void setPhotoModel(final PhotoModel photo) {
this.mPhotoModel = photo;
ImgDisplayOption option = ImgDisplayOption.getCommonDisplayOption();
option.requestOrigin = false;
// TODO : 性能优化
// Debug.startMethodTracing(Environment.getExternalStorageDirectory().getPath()
// + "/community_trace");
ImageLoaderManager.getInstance().getCurrentSDK().displayImage(
"file://" + photo.getOriginalPath(), mPhotoImageView, option);
// Debug.stopMethodTracing();
}
public void setOnClickListener(OnClickListener clickListener) {
if (mRootView != null) {
mRootView.setOnClickListener(clickListener);
}
}
private void setDrawingable() {
mPhotoImageView.setDrawingCacheEnabled(true);
mPhotoImageView.buildDrawingCache();
}
public void setSelected(boolean selected) {
if (mPhotoModel == null) {
return;
}
isCheckAll = true;
mPhotoCheckBox.setChecked(selected);
isCheckAll = false;
}
public void setOnClickListener(onItemClickListener l, int position) {
this.mItemClickListener = l;
this.position = position;
}
public static interface onPhotoItemCheckedListener {
public void onCheckedChanged(PhotoItemViewHolder photoItem, PhotoModel photoModel,
boolean isChecked);
}
public interface onItemClickListener {
public void onItemClick(int position);
}
@Override
public boolean onLongClick(View v) {
if (mItemClickListener != null) {
mItemClickListener.onItemClick(position);
}
return true;
}
}