Skip to content

Instantly share code, notes, and snippets.

@longv
Last active February 1, 2021 22:52
Show Gist options
  • Save longv/fc1ede0773e71214d13ac6ab2a23e816 to your computer and use it in GitHub Desktop.
Save longv/fc1ede0773e71214d13ac6ab2a23e816 to your computer and use it in GitHub Desktop.
DataBindingAdapter for data binding RecyclerView
class DataBindingAdapter(private var bindingEntries: List<DataBindingEntry> = emptyList())
: RecyclerView.Adapter<DataBindingViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DataBindingViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val viewBinding = DataBindingUtil.inflate<ViewDataBinding>(layoutInflater, viewType, parent, false)
return DataBindingViewHolder(viewBinding)
}
override fun onBindViewHolder(holder: DataBindingViewHolder, position: Int) {
holder.bind(bindingEntries[position])
}
override fun getItemCount(): Int = bindingEntries.size
override fun getItemViewType(position: Int): Int = bindingEntries[position].layoutId
fun update(entries: List<DataBindingEntry>) {
bindingEntries = entries
notifyDataSetChanged()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment