wildantechnoart77

ListMovieAdapter

Jul 4th, 2019
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.98 KB | None | 0 0
  1. package com.wildan.moviecatalogue.adapter
  2.  
  3. import android.content.Context
  4. import android.content.Intent
  5. import android.support.v7.widget.RecyclerView
  6. import android.view.LayoutInflater
  7. import android.view.View
  8. import android.view.ViewGroup
  9. import com.wildan.moviecatalogue.GlideApp
  10. import com.wildan.moviecatalogue.R
  11. import com.wildan.moviecatalogue.activity.DetailActivity
  12. import com.wildan.moviecatalogue.model.movie.MovieResult
  13. import com.wildan.moviecatalogue.utils.DateFormat
  14. import com.wildan.moviecatalogue.utils.UtilsConstant.Companion.DETAIL_EXTRA
  15. import com.wildan.moviecatalogue.utils.UtilsConstant.Companion.MOVIE_EXTRA
  16. import com.wildan.moviecatalogue.utils.UtilsConstant.Companion.POSTER_URL
  17. import kotlinx.android.synthetic.main.item_movie.view.*
  18.  
  19. class ListMovieAdapter(private val context: Context?) : RecyclerView.Adapter<ListMovieAdapter.MovieViewHolder>() {
  20.  
  21.     private var mMoviesList = ArrayList<MovieResult>()
  22.  
  23.     fun setData(items: ArrayList<MovieResult>) {
  24.         mMoviesList.clear()
  25.         mMoviesList.addAll(items)
  26.         notifyDataSetChanged()
  27.     }
  28.  
  29.     fun refreshAdapter(movies: List<MovieResult>) {
  30.         mMoviesList.addAll(movies)
  31.         notifyItemRangeChanged(0, mMoviesList.size)
  32.     }
  33.  
  34.     override fun onCreateViewHolder(viewGroup: ViewGroup, p1: Int): MovieViewHolder {
  35.         val view = LayoutInflater.from(context).inflate(R.layout.item_movie, viewGroup, false)
  36.         return MovieViewHolder(view)
  37.     }
  38.  
  39.     override fun getItemCount(): Int {
  40.         return mMoviesList.size
  41.     }
  42.  
  43.     override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
  44.  
  45.         holder.itemView.img_poster?.let {
  46.             context?.let { it1 ->
  47.                 GlideApp.with(it1)
  48.                     .load(POSTER_URL + mMoviesList[position].posterPath)
  49.                     .into(it)
  50.             }
  51.         }
  52.  
  53.         holder.itemView.tv_title?.text = mMoviesList[position].title.toString()
  54.         holder.itemView.tv_date?.text = DateFormat.getLongDate(mMoviesList[position].releaseDate.toString())
  55.         holder.itemView.tv_popularity?.text =
  56.             context?.resources?.getString(R.string.movie_popularity)?.let {
  57.                 String.format(
  58.                     it,
  59.                     mMoviesList[position].popularity.toString()
  60.                 )
  61.             }
  62.         holder.itemView.tv_rating?.text =
  63.             context?.resources?.getString(R.string.movie_rating)?.let {
  64.                 String.format(
  65.                     it,
  66.                     mMoviesList[position].voteAverage.toString()
  67.                 )
  68.             }
  69.  
  70.         holder.itemView.movie_item?.setOnClickListener {
  71.             val intent = Intent(context, DetailActivity::class.java)
  72.             intent.putExtra(MOVIE_EXTRA, mMoviesList[position].id.toString())
  73.             intent.putExtra(DETAIL_EXTRA, "movie")
  74.             context?.startActivity(intent)
  75.         }
  76.     }
  77.  
  78.     inner class MovieViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
  79. }
Add Comment
Please, Sign In to add comment