Created
December 30, 2019 19:24
-
-
Save emmano/aab789e7db8d6fe92677ca187c602967 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
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