ViewBinding
如果已经使用DataBinding那么本章不用了解
| 功能 | ViewBinding | DataBinding |
|---|---|---|
取代findViewById() |
||
| 双向数据绑定 | MVVM最优方案 | |
| 复用xml属性 | 减少代码量 | |
| 防止View空指针 | 代码更健壮 | |
| 编译期生成代码 | 所有布局全部生成 | 仅生成包含<layout>生成 |
| 封装实现 | 反射+泛型 | 使用Api创建 |
| 替换原有xml属性 | 优先自定义属性 |
使用¶
使用getBinding()获取ViewBinding对象
rv.linear().setup {
addType<SimpleModel>(R.layout.item_simple)
onBind {
val binding = getBinding<ItemSimpleBinding>()
}
}.models = getData()
多类型需要判断类型
如果是多类型请先判断类型再getBinding(), 避免获取到错的ViewBinding导致崩溃, 请阅读区分类型