[TOP]
数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。 布局通常是使用调用界面框架方法的代码在 Activity 中定义的。例如,下面的代码会调用 findViewById() 以查找 TextView 微件,并将其绑定到 viewModel 变量的 userName 属性:
android节点下引入 dataBinding{ enabled=true }
public class User extends BaseObservable {
String name;
int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
@Bindable
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
notifyChange();
// notifyPropertyChanged(BR.m);
}
@Bindable
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
notifyChange();
}
public void update() {
this.name = "wilson yang";
this.age = 1232;
notifyChange();
}
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="com.wilson.android_databinding.model.User" />
<variable
name="user"
type="com.wilson.android_databinding.model.User" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.name}" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{String.valueOf(user.age)}" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
public class DataBindingActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DataBindingBinding binding = DataBindingUtil.setContentView(this, R.layout.data_binding);
User user = new User("wilson", 11);
binding.setUser(user);
binding.setLifecycleOwner(this);
}
}
DataBindingBinding 是对应data_binding布局生成的文件
官方定义是:LiveData 是一个可被观察的数据持有类。与普通的被观察者(如 RxJava 中的 Observable)不同的是,LiveData 是生命周期感知的,也就是说,它能感知其它应用组件(Activity,Fragment,Service)的生命周期。这种感知能力可以确保只有处于 active 状态的组件才能收到 LiveData 的更新。详情可查看 Lifecycle。
https://juejin.im/post/5bfb4d6a6fb9a049df23bc98
https://www.journaldev.com/22561/android-mvvm-livedata-data-binding