【android学习】Jetpack:LiveData的简单使用
程序员文章站
2022-06-07 15:15:05
...
简介
- LiveData提供可观察的数据持有者类;
- LiveData与Fragment、Activity、Service一起持有相同生命周期,LiveData仅更新处于活动生命周期状态的应用程序组件观察者;
- 提供数据共享。
具体优点可以参考官方文档,我们这里简单使用
创建LiveDataViewModel类
这里我们在MutableLiveData中存放了一个User类,这样就将User类数据共享出去了,可以在其他的activity,fragment中都可以获取,监听这个数据的变化
public class LiveDataViewModel extends ViewModel {
private MutableLiveData<User> user;
public MutableLiveData<User> getUser() {
if (user == null) {
user = new MutableLiveData<User>();
}
return user;
}
}
添加观察者,监听数据变化
我们这里在activity中,监听User的变化,将修改以后的user值,设置到textview中
liveDataViewModel = ViewModelProviders.of(this).get(LiveDataViewModel.class);
liveDataViewModel.getUser().observe(this, new Observer<User>() {
@Override
public void onChanged(User user) {
Log.d(TAG,""+user.toString());
mText.setText(user.toString());
}
});
动态修改user类的值
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
User user = new User("张三"+index,"mima"+index,"www.baidu.com");
//set这个方法必须在主线程中调用
liveDataViewModel.getUser().setValue(user);
//子线程中调用需要使用post方法
// model.getUser().postValue(user);
index++;
}
});
这样,每点击一次button,就可以重新设置user的值,运行效果如下
demo下载demo下载