package com.hitherejoe.bourbon.ui.browse;
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.ProgressBar;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.hitherejoe.bourbon.R;
import com.hitherejoe.bourboncorecommon.data.model.Shot;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
import butterknife.Bind;
import butterknife.ButterKnife;
public class BrowseAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Shot> mShots;
private ClickListener mClickListener;
@Inject
public BrowseAdapter() {
mShots = Collections.emptyList();
}
public void setShots(List<Shot> shots) {
mShots = shots;
}
public void setClickListener(ClickListener clickListener) {
mClickListener = clickListener;
}
@Override
public int getItemCount() {
return mShots.size();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_shot, parent, false);
return new ShotViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ShotViewHolder) {
Shot shot = mShots.get(position);
ShotViewHolder viewHolder = (ShotViewHolder) holder;
viewHolder.mShot = shot;
viewHolder.likeCountText.setText(shot.likes_count);
viewHolder.viewCountText.setText(shot.title);
Glide.with(holder.itemView.getContext()).load(shot.images.normal)
.diskCacheStrategy(DiskCacheStrategy.SOURCE).into(viewHolder.shotImage);
} else {
((ProgressViewHolder) holder).progress.setIndeterminate(true);
}
}
public class ShotViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.image_shot) ImageView shotImage;
@Bind(R.id.image_like) ImageView likeCountImage;
@Bind(R.id.text_like_count) TextView likeCountText;
@Bind(R.id.text_title) TextView viewCountText;
@Bind(R.id.layout_header) View viewHeader;
public Shot mShot;
public ShotViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mClickListener != null) {
mClickListener.onShotClick(mShot);
}
}
});
}
}
public static class ProgressViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.progress) ProgressBar progress;
public ProgressViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
public interface ClickListener {
void onShotClick(Shot shot);
}
}