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导致崩溃, 请阅读区分类型