/* * Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com> * All Rights Reserved. */ package me.zhanghai.android.douya.ui; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.Space; import butterknife.BindView; import butterknife.ButterKnife; import me.zhanghai.android.douya.R; import me.zhanghai.android.douya.network.api.info.apiv2.Image; import me.zhanghai.android.douya.util.ViewUtils; public class HorizontalImageAdapter extends SimpleAdapter<Image, HorizontalImageAdapter.ViewHolder> { private OnImageClickListener mOnImageClickListener; public HorizontalImageAdapter() { setHasStableIds(true); } public void setOnImageClickListener(OnImageClickListener listener) { mOnImageClickListener = listener; } @Override public long getItemId(int position) { // Deliberately using plain hash code to identify only this instance. return getItem(position).hashCode(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHolder(ViewUtils.inflate(R.layout.horizontal_image_item, parent)); } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { holder.imageLayout.loadImage(getItem(position)); holder.imageLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mOnImageClickListener != null) { mOnImageClickListener.onImageClick(holder.getAdapterPosition()); } } }); // FIXME: This won't work properly if items are changed. ViewUtils.setVisibleOrGone(holder.dividerSpace, position != getItemCount() - 1); } public interface OnImageClickListener { void onImageClick(int position); } static class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.image) public ImageLayout imageLayout; @BindView(R.id.divider) public Space dividerSpace; public ViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } }