Chung
04/28/2020, 11:55 PMViewHolder
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return when (viewType) {
0 -> ViewHolder(CategoryHeaderBinding.inflate(LayoutInflater.from(parent.context), parent,false))
else -> ViewHolder(CategoryCardBinding.inflate(LayoutInflater.from(parent.context), parent, false))
}
}
it passes either CategoryHeaderBinding
or CategoryCardBinding
to ViewHolder
class ViewHolder(private val binding: CategoryCardBinding OR CategoryHeaderBinding) :
RecyclerView.ViewHolder(binding.root) {
}
How do I make ViewHolder
accepts binding
to be either CategoryCardBinding
or CategoryHeaderBinding
Chilli
04/29/2020, 12:15 AMChung
04/29/2020, 12:24 AMrax
04/29/2020, 12:38 AMbinding
?
Are you just setting variables in binding
?Chung
04/29/2020, 12:41 AMfun bind(subcategory: Subcategory) {
binding.subcategory = subcategory
}
fun bind(brand: Brand) {
binding.brand = brand
}
basically binding
allows me to update somethingChung
04/29/2020, 12:42 AMbind
function is inside ViewHolder
rax
04/29/2020, 12:43 AMclass MyViewHolder(private val binding: ViewDataBinding): RecyclerView.ViewHolder(binding.root) {
fun bind(subcategory: Subcategory) {
binding.setVariable(BR.subcategory, subcategory)
binding.executePendingBindings()
}
fun bind(brand: Brand) {
binding.setVariable(BR.brand, brand)
binding.executePendingBindings()
}
}
• ViewDataBinding.setVariable
will set variable if it exists in the layout.
• BR
here is <your.package.name>.BR
rax
04/29/2020, 12:44 AMChung
04/29/2020, 12:52 AM