LiveData是什么
LiveData是一种可观察的数据存储器类,具有生命周期的感知能力。
简单使用
LiveData
一般都是和ViewModel一起使用。定义一个类继承自ViewModel
:
public class LiveDataSub extends ViewModel {
private MutableLiveData<String> infos;
private int number;
public MutableLiveData<String> getInfo() {
if (infos == null) {
infos = new MutableLiveData<>();
}
return infos;
}
public int increaseNumber() {
number++;
return number;
}
}
在这个类里定义MutableLiveData
类型的属性,并提供外界访问的方法getInfo
在Activity中使用
public class LiveDataActivity extends AppCompatActivity {
private TextView tv;
private LiveDataSub viewModel;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_livedata);
tv = findViewById(R.id.tv);
viewModel = ViewModelProviders.of(this).get(LiveDataSub.class);
viewModel.getInfo().observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
tv.setText(s);
}
});
}
public void update(View view) {
String info = "info:" + viewModel.increaseNumber();
viewModel.getInfo().setValue(info);
}
}
通过ViewModelProviders.of(this).get(LiveDataSub.class
)来实例化刚才定义的ViewModel
,然后通过调用LiveData
的observe
方法添加对当前Activity的观察。
通过LiveData的setValue
可以来更新数据,此时界面会自动更新。