package com.hpw.myapp.widget.imageselector.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.hpw.myapp.R; import com.hpw.myapp.widget.imageselector.model.LocalMedia; import com.hpw.myapp.widget.imageselector.model.LocalMediaFolder; import java.io.File; import java.util.ArrayList; import java.util.List; public class ImageFolderAdapter extends RecyclerView.Adapter<ImageFolderAdapter.ViewHolder>{ private Context context; private List<LocalMediaFolder> folders = new ArrayList<>(); private int checkedIndex = 0; private OnItemClickListener onItemClickListener; public ImageFolderAdapter(Context context) { this.context = context; } public void bindFolder(List<LocalMediaFolder> folders){ this.folders = folders; notifyDataSetChanged(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(context).inflate(R.layout.item_folder,parent,false); return new ViewHolder(itemView); } @Override public void onBindViewHolder(ViewHolder holder, final int position) { final LocalMediaFolder folder = folders.get(position); Glide.with(context) .load(new File(folder.getFirstImagePath())) .placeholder(R.mipmap.ic_placeholder) .error(R.mipmap.ic_placeholder) .centerCrop() .into(holder.firstImage); holder.folderName.setText(folder.getName()); holder.imageNum.setText(context.getString(R.string.num_postfix,folder.getImageNum())); holder.isSelected.setVisibility(checkedIndex == position ? View.VISIBLE : View.GONE); holder.contentView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onItemClickListener != null) { checkedIndex = position; notifyDataSetChanged(); onItemClickListener.onItemClick(folder.getName(),folder.getImages()); } } }); } @Override public int getItemCount() { return folders.size(); } class ViewHolder extends RecyclerView.ViewHolder{ ImageView firstImage; TextView folderName; TextView imageNum; ImageView isSelected; View contentView; public ViewHolder(View itemView) { super(itemView); contentView = itemView; firstImage = (ImageView) itemView.findViewById(R.id.first_image); folderName = (TextView) itemView.findViewById(R.id.folder_name); imageNum = (TextView) itemView.findViewById(R.id.image_num); isSelected = (ImageView) itemView.findViewById(R.id.is_selected); } } public void setOnItemClickListener(OnItemClickListener onItemClickListener){ this.onItemClickListener = onItemClickListener; } public interface OnItemClickListener{ void onItemClick(String folderName, List<LocalMedia> images); } }