package com.netease.nim.uikit.common.media.picker.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.netease.nim.uikit.R;
import com.netease.nim.uikit.common.media.picker.fragment.PickerImageFragment.OnPhotoSelectClickListener;
import com.netease.nim.uikit.common.media.picker.loader.PickerlImageLoadTool;
import com.netease.nim.uikit.common.media.picker.loader.RotateImageViewAware;
import com.netease.nim.uikit.common.media.picker.model.PhotoInfo;
import com.netease.nim.uikit.common.media.picker.util.ThumbnailsUtil;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import java.util.List;
public class PickerPhotoAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mInflater;
private List<PhotoInfo> list;
private GridView gridView;
private int hasSelect = 0;
private int width = ScreenUtil.screenWidth / 4;
private boolean isMutiMode;
private int maxSelectSize;
private OnPhotoSelectClickListener onPhotoSelectClickListener;
public PickerPhotoAdapter(Context context, List<PhotoInfo> list, GridView gridView,
boolean isMutiMode, int hasSelect, int maxSelectSize) {
mContext = context;
mInflater = LayoutInflater.from(context);
this.list = list;
this.gridView = gridView;
this.isMutiMode = isMutiMode;
this.hasSelect = hasSelect;
this.maxSelectSize = maxSelectSize;
if (onPhotoSelectClickListener == null) {
onPhotoSelectClickListener = (OnPhotoSelectClickListener) context;
}
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public void updateSelectNum(int hasSelectNum){
this.hasSelect = hasSelectNum;
}
public void refreshView(int index) {
int visiblePos = gridView.getFirstVisiblePosition();
View view = gridView.getChildAt(index - visiblePos);
ViewHolder holder = (ViewHolder) view.getTag();
if (list.get(index).isChoose()) {
holder.select.setImageResource(R.drawable.nim_picker_image_selected);
} else {
holder.select.setImageResource(R.drawable.nim_picker_image_normal);
}
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.nim_picker_photo_grid_item, null);
viewHolder.image = (ImageView) convertView.findViewById(R.id.picker_photo_grid_item_img);
viewHolder.select = (ImageView) convertView.findViewById(R.id.picker_photo_grid_item_select);
viewHolder.selectHotPot = (RelativeLayout) convertView.findViewById(R.id.picker_photo_grid_item_select_hotpot);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if(isMutiMode){
viewHolder.selectHotPot.setVisibility(View.VISIBLE);
}else{
viewHolder.selectHotPot.setVisibility(View.GONE);
}
LayoutParams hotpotLayoutParams = viewHolder.selectHotPot.getLayoutParams();
hotpotLayoutParams.width = width / 2;
hotpotLayoutParams.height = width / 2;
viewHolder.selectHotPot.setLayoutParams(hotpotLayoutParams);
viewHolder.selectHotPot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
PhotoInfo photo = list.get(position);
if (photo.isChoose()) {
photo.setChoose(false);
hasSelect--;
} else if (hasSelect < maxSelectSize) {
photo.setChoose(true);
hasSelect++;
} else {
Toast.makeText(mContext, String.format(mContext.getResources().getString(
R.string.picker_image_exceed_max_image_select), maxSelectSize), Toast.LENGTH_SHORT).show();
return;
}
refreshView(position);
onPhotoSelectClickListener.onPhotoSelectClick(photo);
}
});
if (list.get(position).isChoose()) {
viewHolder.select.setImageResource(R.drawable.nim_picker_image_selected);
} else {
viewHolder.select.setImageResource(R.drawable.nim_picker_image_normal);
}
LayoutParams imageLayoutParams = viewHolder.image.getLayoutParams();
imageLayoutParams.width = width;
imageLayoutParams.height = width;
viewHolder.image.setLayoutParams(imageLayoutParams);
final PhotoInfo photoInfo = list.get(position);
if (photoInfo != null) {
String thumbPath = ThumbnailsUtil.getThumbnailWithImageID(photoInfo.getImageId(), photoInfo.getFilePath());
PickerlImageLoadTool.disPlay(thumbPath, new RotateImageViewAware(viewHolder.image, photoInfo.getAbsolutePath()),
R.drawable.nim_image_default);
}
return convertView;
}
public class ViewHolder {
public ImageView image;
public ImageView select;
public RelativeLayout selectHotPot;
}
}