-
简介
介绍 :
DataBinding 是以声明的方式,将布局中组件与应用程序源数据绑定在一起的框架库。
作用:
1.将布局组件与源数据绑定,使源数据变化的同时布局组件及时同步更新。
2.减少Activity中View的定义(private View view)与初始化(findViewById),让Activity代码更专注于界面的逻辑更新。
3.可自定义适配器,实现扩展组件的属性功能。
4.可自定义事件,实现各种组件的事件触发功能。
特点:
1.使用简单,主要以声明的方式实现。
2.功能强大,可自定义适配器 & 事件 ,兼容各种界面逻辑需求。
-
添加DataBinding
工程build.gradle
-
xml中使用
在xml中,光标移到父布局,Alt+Enter快捷键添加DataBinding
工具会自动生成data标签,里面的name自己取就行,type是和ViewModel对应来控制数据
-
Activity中使用
public class LoginActivity extends FragmentActivity {
TestViewModel model;
ActivityLoginBinding binding; // binding名称和xml名称一致,自动生成
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this,R.layout.activity_login);
model = new ViewModelProvider(this,new ViewModelProvider.NewInstanceFactory()).get(TestViewModel.class);
binding.setData(model);
model.setData("wwwww");
binding.setLifecycleOwner(this); //自我观察
}
}
-
小结
Activity简洁了好多,LiveData的观察和更新监听都省略了。这里是JetPack帮我们做了,相应的功能加到了bing中了。
DataBinding实现了数据和页面的直接绑定。然后数据的控制直接在ViewModel中,这样就能在Activity中减少很多不必要的代码。
网友评论