|
| 1 | +package com.arctouch.codechallenge.home |
| 2 | + |
| 3 | +import android.support.v7.widget.RecyclerView |
| 4 | +import android.view.LayoutInflater |
| 5 | +import android.view.View |
| 6 | +import android.view.ViewGroup |
| 7 | +import com.arctouch.codechallenge.R |
| 8 | +import com.arctouch.codechallenge.model.Movie |
| 9 | +import com.arctouch.codechallenge.util.MovieImageUrlBuilder |
| 10 | +import com.bumptech.glide.Glide |
| 11 | +import com.bumptech.glide.request.RequestOptions |
| 12 | +import kotlinx.android.synthetic.main.movie_item.view.* |
| 13 | + |
| 14 | +class HomeAdapter(private val movies: List<Movie>) : RecyclerView.Adapter<HomeAdapter.ViewHolder>() { |
| 15 | + |
| 16 | + class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { |
| 17 | + |
| 18 | + private val movieImageUrlBuilder = MovieImageUrlBuilder() |
| 19 | + |
| 20 | + fun bind(movie: Movie) { |
| 21 | + itemView.titleTextView.text = movie.title |
| 22 | + itemView.genresTextView.text = movie.genres?.joinToString(separator = ", ") { it.name } |
| 23 | + itemView.releaseDateTextView.text = movie.releaseDate |
| 24 | + |
| 25 | + Glide.with(itemView) |
| 26 | + .load(movie.posterPath?.let { movieImageUrlBuilder.buildPosterUrl(it) }) |
| 27 | + .apply(RequestOptions().placeholder(R.drawable.ic_image_placeholder)) |
| 28 | + .into(itemView.posterImageView) |
| 29 | + } |
| 30 | + } |
| 31 | + |
| 32 | + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { |
| 33 | + val view = LayoutInflater.from(parent.context).inflate(R.layout.movie_item, parent, false) |
| 34 | + return ViewHolder(view) |
| 35 | + } |
| 36 | + |
| 37 | + override fun getItemCount() = movies.size |
| 38 | + |
| 39 | + override fun onBindViewHolder(holder: ViewHolder, position: Int) = holder.bind(movies[position]) |
| 40 | +} |
0 commit comments