package jp.gr.procon.proconapp.ui.adapter; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.bumptech.glide.Glide; import java.util.List; import jp.gr.procon.proconapp.R; import jp.gr.procon.proconapp.model.GamePhoto; import jp.gr.procon.proconapp.ui.callback.OnClickPhotoListener; public class GamePhotoRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private List<GamePhoto> mItems; private OnClickPhotoListener mOnClickPhotoListener; public GamePhotoRecyclerAdapter(@NonNull List<GamePhoto> items) { mItems = items; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return ItemViewHolder.create(parent); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ((ItemViewHolder) holder).bindTo(mItems.get(position), mOnClickPhotoListener); } @Override public int getItemCount() { return mItems.size(); } public void setOnClickPhotoListener(OnClickPhotoListener onClickPhotoListener) { mOnClickPhotoListener = onClickPhotoListener; } private static class ItemViewHolder extends RecyclerView.ViewHolder { public static final int RES_ID = R.layout.item_game_photo; private ImageView mThumbnailView; public static ItemViewHolder create(ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(parent.getContext()); return new ItemViewHolder(inflater.inflate(RES_ID, parent, false)); } public ItemViewHolder(View itemView) { super(itemView); mThumbnailView = (ImageView) itemView.findViewById(R.id.thumbnail_view); } public void bindTo(final GamePhoto photo, final OnClickPhotoListener listener) { Glide.with(itemView.getContext()) .load(photo.getmThumbnailUrl()) .centerCrop() .into(mThumbnailView); mThumbnailView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (listener != null) { listener.onClickPhoto(photo); } } }); } } }