Skip to content

Instantly share code, notes, and snippets.

@emmano
Created December 30, 2019 19:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emmano/aab789e7db8d6fe92677ca187c602967 to your computer and use it in GitHub Desktop.
Save emmano/aab789e7db8d6fe92677ca187c602967 to your computer and use it in GitHub Desktop.
fun TestFragment.adapter() = adapter<Model> {
val TYPE_HEADER = 1
val TYPE_CONTENT = 2
onCreateViewHolder { parent, viewType ->
when (viewType) {
TYPE_HEADER -> holder<HeaderBinding, Header>(parent, R.layout.header, BR.header) {
onBind { binding, header ->
binding.header.setOnClickListener {
Toast.makeText(
this@adapter.requireContext(),
header.title,
Toast.LENGTH_SHORT
).show()
}
}
}
TYPE_CONTENT -> holder<ContentBinding, Content>(parent, R.layout.content, BR.content) {
onClick {
Toast.makeText(
this@adapter.requireContext(),
"Row Tapped",
Toast.LENGTH_SHORT
).show()
}
onBind { binding, content ->
binding.content.setOnClickListener {
Toast.makeText(
this@adapter.requireContext(),
content.content,
Toast.LENGTH_SHORT
).show()
}
}
}
else -> throw IllegalStateException("ViewHolder not supported for itemViewType: $viewType")
}
}
getViewTypes {
when (it) {
is Header -> TYPE_HEADER
is Content -> TYPE_CONTENT
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment