我有一个具有多个Layout的适配器,它有多个视图持有者,所有视图持有者都有一个bind函数,其中包含与我要创建包含该函数及其代码和实现的BaseViewHolder类相同的代码它在其他视图持有者上。但是,由于在函数内部使用了布局的绑定对象,所以我似乎找不到一种将绑定对象定义为通用对象并根据相应的视图持有者对其进行初始化的方法!
这些是我的视图持有者类:
class FirstViewHolder(private val binding: FirstViewBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(myData: MyData) {
binding.datas= myData
binding.executePendingBindings()
}
}
class SecondViewHolder(private val binding: SecondViewBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(myData: MyData) {
binding.datas= myData
binding.executePendingBindings()
}
简而言之,我想以某种方式创建一个具有bind函数的基类,这样我的代码就不会多余了!
答案 0 :(得分:0)
由于数据绑定会为每个布局创建绑定类,因此没有继承。
在这种情况下,您可以通过binding.setVariable(BR.something, data)
使用变量的常规设置。
因此,您的情况应该是:
fun bind(myData: MyData) {
binding.setVariable(BR.datas, myData)
binding.executePendingBindings()
}
然后在您的布局中不要忘记添加变量。