Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. package me.drakeet.multitype
  2.  
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import androidx.recyclerview.widget.RecyclerView
  7. import kotlinx.android.extensions.LayoutContainer
  8. import me.drakeet.multitype.ItemViewBinder
  9.  
  10. abstract class InflateViewBinder<T : Any> : ItemViewBinder<T, InflateViewHolder<T>>() {
  11.  
  12. abstract val layoutId: Int
  13.  
  14. open fun InflateViewHolder<T>.onCreated() {}
  15.  
  16. abstract fun InflateViewHolder<T>.onBind()
  17.  
  18. override fun onCreateViewHolder(
  19. inflater: LayoutInflater,
  20. parent: ViewGroup
  21. ): InflateViewHolder<T> {
  22. val view = inflater.inflate(layoutId, parent, false)
  23. val viewHolder = InflateViewHolder<T>(view)
  24. viewHolder.onCreated()
  25. return viewHolder
  26. }
  27.  
  28. override fun onBindViewHolder(holder: InflateViewHolder<T>, item: T) {
  29. holder.item = item
  30. holder.onBind()
  31. }
  32. }
  33.  
  34. class InflateViewHolder<T : Any>(override val containerView: View) :
  35. RecyclerView.ViewHolder(containerView),
  36. LayoutContainer {
  37.  
  38. lateinit var item: T
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement