BRVAH和ViewBinding的结合封装
封装基类:
abstract class ArchAdapter<B : ViewBinding,T>(data : MutableList<T>) : BaseQuickAdapter<T, ArchAdapter<B, T>.ViewHolder>(0,data){
inner class ViewHolder(val binding: B,view : View) : BaseViewHolder(view)
override fun onCreateDefViewHolder(parent: ViewGroup, viewType: Int) : ViewHolder {
val viewBindingClass = ((javaClass.genericSuperclass as ParameterizedType)).actualTypeArguments[0] as Class<*>
val binding = viewBindingClass.getMethod("inflate", LayoutInflater::class.java,ViewGroup::class.java,
Boolean::class.java
).invoke(viewBindingClass,LayoutInflater.from(context),parent,false) as B
return ViewHolder(binding,binding.root)
}
override fun convert(holder: ViewHolder, item: T) {
convert(holder.binding,item)
}
abstract fun convert(binding : B,item : T)
}
使用示例:
class HomeAdapter(data : MutableList<HomeBean>) : ArchAdapter<ViewHomeBinding,HomeBean>(data) {
override fun convert(binding: ViewManHomeBinding, item: HomeBean) {
binding.user = item
}
}