Created
May 21, 2021 07:37
-
-
Save adityawid/07d161b1c52556e43f80ac3a36e1a66f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MoviePagingAdapter : | |
PagingDataAdapter<Movie, MoviePagingAdapter.MyViewHolder>(listItemCallback) { | |
var onItemClick: ((Movie) -> Unit)? = null | |
companion object { | |
val listItemCallback = object : DiffUtil.ItemCallback<Movie>() { | |
override fun areItemsTheSame(oldItem: Movie, newItem: Movie): Boolean { | |
return oldItem.id == newItem.id | |
} | |
override fun areContentsTheSame(oldItem: Movie, newItem: Movie): Boolean { | |
return oldItem == newItem | |
} | |
} | |
} | |
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { | |
val layoutInflater = LayoutInflater.from(parent.context) | |
val binding: ItemMovieBinding = DataBindingUtil.inflate( | |
layoutInflater, | |
R.layout.item_movie, | |
parent, | |
false | |
) | |
return MyViewHolder(binding) | |
} | |
override fun onBindViewHolder(holder: MyViewHolder, position: Int) { | |
val data = getItem(position) | |
data?.let { holder.bind(it) } | |
} | |
inner class MyViewHolder(private val binding: ItemMovieBinding) : | |
RecyclerView.ViewHolder(binding.root) { | |
init { | |
binding.root.setOnClickListener { | |
val item = getItem(absoluteAdapterPosition) | |
if (item != null) { | |
onItemClick?.invoke(item) | |
} | |
} | |
} | |
fun bind(movie: Movie) { | |
binding.titleTextView.text = movie.title | |
binding.descriptionTextView.text = movie.overview | |
val posterURL = "https://image.tmdb.org/t/p/w500" + movie.posterPath | |
Glide.with(binding.imageView.context) | |
.load(posterURL) | |
.into(binding.imageView) | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment