package com.ronakmanglani.watchlist.ui.adapter;
import android.content.Context;
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.TextView;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.ronakmanglani.watchlist.R;
import com.ronakmanglani.watchlist.model.Movie;
import com.ronakmanglani.watchlist.api.ApiHelper;
import com.ronakmanglani.watchlist.util.TextUtil;
import com.ronakmanglani.watchlist.api.VolleySingleton;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
public class SearchAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
public ArrayList<Movie> movieList;
private final OnMovieClickListener onMovieClickListener;
// Constructor
public SearchAdapter(Context context, OnMovieClickListener onMovieClickListener) {
this.context = context;
this.movieList = new ArrayList<>();
this.onMovieClickListener = onMovieClickListener;
}
// RecyclerView methods
@Override
public int getItemCount() {
return movieList.size();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewGroup v = (ViewGroup) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_movie_compact, parent, false);
return new SearchViewHolder(v, onMovieClickListener);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
Movie movie = movieList.get(position);
final SearchViewHolder holder = (SearchViewHolder) viewHolder;
// Load image
if (TextUtil.isNullOrEmpty(movie.backdropImage)) {
holder.movieImage.setImageResource(R.drawable.default_backdrop_circle);
} else {
int imageSize = (int) context.getResources().getDimension(R.dimen.movie_compact_image_size);
String imageUrl = ApiHelper.getImageURL(movie.backdropImage, imageSize);
VolleySingleton.getInstance().imageLoader.get(imageUrl, new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer imageContainer, boolean b) {
holder.movieImage.setImageBitmap(imageContainer.getBitmap());
}
@Override
public void onErrorResponse(VolleyError volleyError) {
holder.movieImage.setImageResource(R.drawable.default_backdrop_circle);
}
});
}
// Set text
holder.movieName.setText(movie.title);
holder.movieYear.setText(movie.year);
if (TextUtil.isNullOrEmpty(movie.rating) || movie.rating.equals("0")) {
holder.movieRatingHolder.setVisibility(View.GONE);
} else {
holder.movieRating.setText(movie.rating);
holder.movieRatingHolder.setVisibility(View.VISIBLE);
}
}
// ViewHolder
public class SearchViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.movie_item) View movieItem;
@BindView(R.id.movie_image) ImageView movieImage;
@BindView(R.id.movie_name) TextView movieName;
@BindView(R.id.movie_year) TextView movieYear;
@BindView(R.id.movie_rating_holder) View movieRatingHolder;
@BindView(R.id.movie_rating) TextView movieRating;
public SearchViewHolder(final ViewGroup itemView, final OnMovieClickListener onMovieClickListener) {
super(itemView);
ButterKnife.bind(this, itemView);
movieItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onMovieClickListener.onMovieClicked(getAdapterPosition());
}
});
}
}
// Click listener interface
public interface OnMovieClickListener {
void onMovieClicked(final int position);
}
}