-
Notifications
You must be signed in to change notification settings - Fork 0
/
MoviesAdapter.kt
43 lines (36 loc) · 1.76 KB
/
MoviesAdapter.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package mohsen.soltanian.cleanarchitecture.ui.fragments.main.adapter
import android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import mohsen.soltanian.cleanarchitecture.BR
import mohsen.soltanian.cleanarchitecture.R
import mohsen.soltanian.cleanarchitecture.core.data.models.response.Movie
import mohsen.soltanian.cleanarchitecture.databinding.RowMovieBinding
import mohsen.soltanian.cleanarchitecture.libraries.framework.core.adapter.BasicPagingRecyclerAdapter
import mohsen.soltanian.cleanarchitecture.libraries.framework.core.base.annotation.Layout
import mohsen.soltanian.cleanarchitecture.libraries.framework.core.base.binding.getDataBinding
@SuppressLint("NonConstantResourceId")
@Layout(value = R.layout.row_movie)
class MoviesAdapter : BasicPagingRecyclerAdapter<Movie, RowMovieBinding?>(diffCallback = Comparator) {
companion object Comparator : DiffUtil.ItemCallback<Movie>() {
override fun areItemsTheSame(oldItem: Movie, newItem: Movie) =
oldItem.movieId == newItem.movieId
@SuppressLint("DiffUtilEquals")
override fun areContentsTheSame(oldItem: Movie, newItem: Movie) =
oldItem == newItem
}
internal var clickListener: (Movie) -> Unit = { _ -> }
override fun createBinding(inflater: LayoutInflater, parent: ViewGroup): RowMovieBinding? {
return getDataBinding(layoutInflater = inflater, container = parent)
}
override fun bindView(binding: RowMovieBinding?, position: Int, item: Movie) {
binding?.setVariable(BR.model, item)
binding?.setVariable(BR.click, ClickProxy())
}
inner class ClickProxy {
fun itemSelection(movie: Movie) {
clickListener(movie)
}
}
}