package com.ronakmanglani.watchlist.ui.adapter; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.ronakmanglani.watchlist.R; import com.ronakmanglani.watchlist.model.Review; import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; public class ReviewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public ArrayList<Review> reviewList; private final OnReviewClickListener onReviewClickListener; // Constructor public ReviewAdapter(ArrayList<Review> reviewList, OnReviewClickListener onReviewClickListener) { this.reviewList = reviewList; this.onReviewClickListener = onReviewClickListener; } // RecyclerView methods @Override public int getItemCount() { return reviewList.size(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { ViewGroup v = (ViewGroup) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_review, parent, false); return new ReviewViewHolder(v, onReviewClickListener); } @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { Review review = reviewList.get(position); ReviewViewHolder holder = (ReviewViewHolder) viewHolder; holder.reviewAuthor.setText(review.userName); if (review.hasSpoiler) { holder.reviewBody.setVisibility(View.GONE); holder.reviewSpoiler.setVisibility(View.VISIBLE); } else { holder.reviewBody.setText(review.comment); holder.reviewBody.setVisibility(View.VISIBLE); holder.reviewSpoiler.setVisibility(View.GONE); } holder.reviewTime.setText(review.createdAt); } // ViewHolder public class ReviewViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.review_item) View reviewItem; @BindView(R.id.review_author) TextView reviewAuthor; @BindView(R.id.review_body) TextView reviewBody; @BindView(R.id.review_spoiler) TextView reviewSpoiler; @BindView(R.id.review_time) TextView reviewTime; public ReviewViewHolder(final ViewGroup itemView, final OnReviewClickListener onReviewClickListener) { super(itemView); ButterKnife.bind(this, itemView); reviewItem.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onReviewClickListener.onReviewClicked(getAdapterPosition()); } }); } } // Click listener interface public interface OnReviewClickListener { void onReviewClicked(final int position); } }