package com.gzsll.hupu.ui.gallery; import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.backends.pipeline.PipelineDraweeController; import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.imagepipeline.common.ResizeOptions; import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; import com.gzsll.hupu.R; import com.gzsll.hupu.bean.Image; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; /** * Created by sll on 2016/3/10. */ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder> { @Inject public ImageAdapter() { } private List<Image> images = new ArrayList<>(); private List<Image> selectedImages = new ArrayList<>(); private OnImageItemClickListener mOnImageItemClickListener; public void bind(List<Image> images) { selectedImages.clear(); if (images != null && images.size() > 0) { this.images = images; } else { this.images.clear(); } notifyDataSetChanged(); } public void select(Image image, ImageView ivCheck) { image.checked = !image.checked; if (image.checked) { selectedImages.add(image); ivCheck.setImageResource(R.drawable.ap_gallery_checked); } else { selectedImages.remove(image); ivCheck.setImageResource(R.drawable.ap_gallery_normal); } } public void setDefaultSelected(ArrayList<String> resultList) { for (String path : resultList) { Image image = getImageByPath(path); if (image != null) { selectedImages.add(image); } } if (selectedImages.size() > 0) { notifyDataSetChanged(); } } private Image getImageByPath(String path) { if (images != null && images.size() > 0) { for (Image image : images) { if (image.path.equalsIgnoreCase(path)) { return image; } } } return null; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_grid_gallery, parent, false); return new ViewHolder(v); } @Override public void onBindViewHolder(ViewHolder holder, int position) { Image image = images.get(position); holder.image = image; if (image == null) { return; } holder.ivCheck.setVisibility(View.VISIBLE); holder.ivCheck.setImageResource(selectedImages.contains(image) ? R.drawable.ap_gallery_checked : R.drawable.ap_gallery_normal); int width = 100, height = 100; ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.fromFile(new File(image.path))) .setResizeOptions(new ResizeOptions(width, height)) .build(); PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder() .setOldController(holder.ivPhoto.getController()) .setImageRequest(request) .build(); holder.ivPhoto.setController(controller); } @Override public int getItemCount() { return images.size(); } public void setOnImageItemClickListener(OnImageItemClickListener mOnImageItemClickListener) { this.mOnImageItemClickListener = mOnImageItemClickListener; } public interface OnImageItemClickListener { void click(Image image, ImageView view); } class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.ivPhoto) SimpleDraweeView ivPhoto; @BindView(R.id.ivCheck) ImageView ivCheck; Image image; @OnClick(R.id.flItem) void flItemClick() { if (mOnImageItemClickListener != null) { mOnImageItemClickListener.click(image, ivCheck); } } public ViewHolder(View view) { super(view); ButterKnife.bind(this, view); } } }