Skip to content

Instantly share code, notes, and snippets.

@BindingAdapter("items")
fun setRecyclerViewItems(
recyclerView: RecyclerView,
items: List<RecyclerItem>?
) {
var adapter = (recyclerView.adapter as? RecyclerViewAdapter)
if (adapter == null) {
adapter = RecyclerViewAdapter()
recyclerView.adapter = adapter
}
data class RecyclerItem(
val data: Any,
@LayoutRes val layoutId: Int,
val variableId: Int
) {
fun bind(binding: ViewDataBinding) {
binding.setVariable(variableId, data)
}
}
class RecyclerViewAdapter : RecyclerView.Adapter<BindingViewHolder>() {
private val items = mutableListOf<RecyclerItem>()
override fun getItemCount(): Int {
return items.size
}
override fun getItemViewType(position: Int): Int {
return getItem(position).layoutId