Skip to content

Instantly share code, notes, and snippets.

@ch8n
Created July 29, 2021 11:35
Show Gist options
  • Save ch8n/a83f51f6199ebe46f9b713a1510d097a to your computer and use it in GitHub Desktop.
Save ch8n/a83f51f6199ebe46f9b713a1510d097a to your computer and use it in GitHub Desktop.
/**
* Represent ViewTypes which user provides
*/
sealed class ViewType {
object ListItemHeader : ViewType()
object ListItemContent : ViewType()
}
/**
* Test View Holders
*/
class ContentHeader(view: View) : ViewHolder(view) {
fun bind(){...}
}
class ContentContent(view: View) : ViewHolder(view) {
fun bind(){...}
}
/**
* Implementation of Adapter Class
*/
class SampleAdapter : Adapter() {
/**
* Similar to getItemViewType() of Recycler Adapter
*/
override fun getViewType(pos: Int): ViewType {
return when (pos) {
0 -> ViewType.ListItemHeader
else -> ViewType.ListItemContent
}
}
/**
* Similar to onBindViewHolder() of Recycler Adapter
*/
override fun bindViewHolder(holder: ViewHolder, pos:Int) {
when (holder) {
is ContentHeader -> holder.bind()
is ContentContent -> holder.bind()
}
}
/**
* Similar to onCreateViewHolder() of Recycler Adapter
*/
override fun createViewHolder(viewType: ViewType): ViewHolder {
when (viewType) {
ViewType.ListItemContent -> TODO()
ViewType.ListItemHeader -> TODO()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment