请问BRVAH的多布局中也可以直接用吗
HeJingWei opened this issue · 4 comments
HeJingWei commented
多布局的样式是继承的BaseItemProvider,重写的方法是onCreateViewHolder,
也可以直接这样写吗?
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
return super.onCreateViewHolder(parent, viewType).withBinding { ItemFooBinding.bind(it) }
}
DylanCaiCoding commented
HeJingWei commented
我现在用的3.0以上版本,官方这个可重写的方法是2个参数的,一个参数的方法以及没了,我先试一试可以不可以
DylanCaiCoding commented
我现在用的3.0以上版本,官方这个可重写的方法是2个参数的,一个参数的方法以及没了,我先试一试可以不可以
那应该要判断一下是不是当前的类型:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
return when (viewType) {
itemViewType -> super.onCreateViewHolder(parent, viewType).withBinding { ItemFooBinding.bind(it) }
else -> super.onCreateViewHolder(parent, viewType)
}
}
HeJingWei commented
我参考adapter封装了一个多布局的基类,现在能正常显示
abstract class BaseBindingItemProvider<T, VB : ViewBinding>
(private val inflate: (LayoutInflater, ViewGroup, Boolean) -> VB) : BaseItemProvider<T>() {
override val layoutId: Int
get() = -1
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
return BaseBindingHolder(inflate(LayoutInflater.from(parent.context), parent, false))
}
class BaseBindingHolder(private val binding: ViewBinding) : BaseViewHolder(binding.root) {
constructor(itemView: View) : this(ViewBinding { itemView })
@Suppress("UNCHECKED_CAST")
fun <VB : ViewBinding> getViewBinding() = binding as VB
}
override fun convert(helper: BaseViewHolder, item: T) {
convert(helper as BaseBindingHolder,item)
}
abstract fun convert(helper: BaseBindingHolder, item: T)
}