package ru.ltst.u2020mvp.ui.gallery.view;
import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.squareup.picasso.Picasso;
import java.util.Collections;
import java.util.List;
import ru.ltst.u2020mvp.R;
import ru.ltst.u2020mvp.data.api.model.response.Image;
public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.ViewHolder> {
private List<Image> images = Collections.emptyList();
private final Picasso picasso;
private final LayoutInflater inflater;
@Nullable
private OnClickListener onClickListener;
public GalleryAdapter(Context context, Picasso picasso) {
this.picasso = picasso;
inflater = LayoutInflater.from(context);
}
public void setOnClickListener(@Nullable OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public void replaceWith(List<Image> images) {
this.images = images;
notifyDataSetChanged();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
GalleryItemView view = (GalleryItemView) inflater.inflate(R.layout.gallery_view_image, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.bindTo(images.get(position), picasso);
holder.itemView.setOnClickListener(v -> {
if (onClickListener != null) {
onClickListener.onImageClicked(images.get(position), (GalleryItemView) holder.itemView);
}
});
}
@Override
public int getItemCount() {
return images.size();
}
public static final class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(GalleryItemView itemView) {
super(itemView);
}
public void bindTo(Image image, Picasso picasso) {
((GalleryItemView) itemView).bindTo(image, picasso);
}
}
public interface OnClickListener {
void onImageClicked(Image image, GalleryItemView view);
}
}