klaster
klaster copied to clipboard
DataBinding support?
Have you any plans to support DataBinding layouts?
What do you mean? I've tried it recently, it works with data binding.
val articlesAdapter = Klaster.withViewHolder<DataBindingViewHolder>()
.itemCount { articles.size }
.viewHolder { _: Int, parent: ViewGroup ->
val binding: ViewDataBinding = DataBindingUtil.inflate(
layoutInflater, R.layout.article_list_item, parent, false
)
return@viewHolder DataBindingViewHolder(binding)
}
.bind { position ->
val article = articles[position]
this.bind(article, artileListHandlers)
}
.build()
interface ArticleListHandlers {
fun onArticleClick(article: Article) {}
}
class DataBindingViewHolder(private val binding: ViewDataBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(viewData: Any, handlers: Any) {
binding.setVariable(BR.viewData, viewData)
binding.setVariable(BR.handlers, handlers)
binding.executePendingBindings()
}
}
This data binding stuff
.viewHolder { _: Int, parent: ViewGroup ->
val binding: ViewDataBinding = DataBindingUtil.inflate(
layoutInflater, R.layout.article_list_item, parent, false
)
return@viewHolder DataBindingViewHolder(binding)
}
can be moved to an extension function if needed. Or may be you mean something else?