package com.esoxjem.movieguide.listing; import android.content.Context; import android.graphics.Bitmap; import android.support.v7.graphics.Palette; 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.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.BitmapImageViewTarget; import com.esoxjem.movieguide.Movie; import com.esoxjem.movieguide.R; import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; /** * @author arun */ public class MoviesListingAdapter extends RecyclerView.Adapter<MoviesListingAdapter.ViewHolder> { private List<Movie> movies; private Context context; private MoviesListingView view; public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { @Bind(R.id.movie_poster) ImageView poster; @Bind(R.id.title_background) View titleBackground; @Bind(R.id.movie_name) TextView name; public Movie movie; public ViewHolder(View root) { super(root); ButterKnife.bind(this, root); } @Override public void onClick(View view) { MoviesListingAdapter.this.view.onMovieClicked(movie); } } public MoviesListingAdapter(List<Movie> movies, MoviesListingView moviesView) { this.movies = movies; view = moviesView; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { context = parent.getContext(); View rootView = LayoutInflater.from(context).inflate(R.layout.movie_grid_item, parent, false); return new ViewHolder(rootView); } @Override public void onBindViewHolder(final ViewHolder holder, int position) { holder.itemView.setOnClickListener(holder); holder.movie = movies.get(position); holder.name.setText(holder.movie.getTitle()); Glide.with(context).load(holder.movie .getPosterPath()).asBitmap() .diskCacheStrategy(DiskCacheStrategy.RESULT) .into(new BitmapImageViewTarget(holder.poster) { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { super.onResourceReady(bitmap, anim); Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { holder.titleBackground.setBackgroundColor(palette.getVibrantColor(context .getResources().getColor(R.color.black_translucent_60))); } }); } }); } @Override public int getItemCount() { return movies.size(); } }