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 CategoryHeaderBindingChilli
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 ViewHolderrax
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>.BRrax
04/29/2020, 12:44 AMChung
04/29/2020, 12:52 AM