abstract class BaseAdapter<T, VB : ViewBinding>(
val inflater: (LayoutInflater, parent: ViewGroup, attachToRoot: Boolean) -> VB
) : RecyclerView.Adapter<BaseHolder<VB>>() {
var data: MutableList<T> = mutableListOf()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseHolder<VB> {
return BaseHolder(inflater(LayoutInflater.from(parent.context), parent, false))
}
override fun getItemCount(): Int {
return data.size
}
override fun onBindViewHolder(holder: BaseHolder<VB>, position: Int) {
onBindingData(holder, data[position], position);
}
protected abstract fun onBindingData(holder: BaseHolder<VB>?, t: T, position: Int)
}
class BaseHolder<VB : ViewBinding>(var binding: VB) : RecyclerView.ViewHolder(binding.root) {
}
private val adapter by lazy {
TestAdapter()//继承BaseAdapter
}
binding.rcv.adapter = adapter