Skip to content

Instantly share code, notes, and snippets.

@alaershov
Created November 11, 2019 08:09
Show Gist options
  • Save alaershov/a63445a9dc5e6af7e80df412c1ef05c2 to your computer and use it in GitHub Desktop.
Save alaershov/a63445a9dc5e6af7e80df412c1ef05c2 to your computer and use it in GitHub Desktop.
Delegate comparison
// Ханнес
fun movieCell(listener : (Movie) -> Unit) = adapterDelegateLayoutContainer<Movie, RecyclerItem>(R.layout.item_movie) {
itemView.setClickListener { listener.invoke(item) }
bind { diffPayloads ->
name.text = item.name
}
}
// Антон
object MovieCell : Cell<RecyclerItem>() {
override fun belongsTo(item: RecyclerItem?): Boolean {
return item is Movie
}
override fun type(): Int {
return R.layout.item_movie
}
override fun holder(parent: ViewGroup):RecyclerView.ViewHolder {
return MovieViewHolder(parent.viewOf(type()))
}
override fun bind(
holder: RecyclerView.ViewHolder,
item: RecyclerItem?,
listener: AdapterListener?
) {
if (holder is MovieViewHolder && item is Movie) {
holder.bind(item)
holder.itemView.setOnClickListener {
listener?.listen(item)
}
}
}
}
class MovieViewHolder {
...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment