Android(安卓)>> 14. LiveData
通过上一节:Android >> 12. ViewModel 状态保存,我们知道一个activity的数据可以被ViewModel 单独管理,但是数据对UI 界面的驱动还是由Controler 进行控制,所以我们需要在ViewModel 中增加一个LiveData 用来实现数据对UI 界面的直接驱动,从而减少Controler 的工作。
> 14. LiveData_第1张图片" width="400" height="321" style="border:1px solid black;">
对新建ViewModel 类的操作
-
首先在java 文件同级目录中新建一个类并继承自ViewModel,例如ViewModelWithLiveData,其负责存储和管理LiveData
-
然后在ViewModelWithLiveData 类中创建需要管理的LiveData:
我在此创建了两个MutableLiveData
变量
private MutableLiveData<String> LikedNumber_ip;private MutableLiveData<String> LikedNumber_port;
- 创建对LiveData 进行操作的方法:
public MutableLiveData<String> getLikedNumber_ip() {if (LikedNumber_ip == null) {LikedNumber_ip = new MutableLiveData<>();LikedNumber_ip.setValue("");}return LikedNumber_ip;}public MutableLiveData<String> getLikedNumber_port() {if (LikedNumber_port == null){LikedNumber_port = new MutableLiveData<>();LikedNumber_port.setValue("");}return LikedNumber_port;}public void setEditText_ip(String string){LikedNumber_ip.setValue(string);}public void setEditText_port(String string){LikedNumber_port.setValue(string);}
这时,ViewModelWithLiveData类就写好了。
对程序java 文件程序的操作
- 定义了一个类,当然就要对其进行实例化
首先在MainAcitvity类中先声明对象
ViewModelWithLiveData viewModelWithLiveData;
然后在onCreate() 方法中对该对象进行实例化并设置观察者
注意:对于ViewModel 的实例化并不是使用new 而是使用ViewModelProviders 进行映射
viewModelWithLiveData = ViewModelProviders.of(this).get(ViewModelWithLiveData.class);/* 设置LikedNumber_ip 的观察者 */viewModelWithLiveData.getLikedNumber_ip().observe(this, new Observer<String>() { @Override public void onChanged(String s) { medittext_ip.setText(String.valueOf(s)); }});/* 设置LikedNumber_port 的观察者 */viewModelWithLiveData.getLikedNumber_port().observe(this, new Observer<String>() { @Override public void onChanged(String s) { medittext_port.setText(String.valueOf(s)); }});
这两个观察者的作用就是,在getLikedNumber_ip() 和getLikedNumber_port() 方法的返回值发生改变时,将两个EditText 进行文本设置。
好,那这两个返回值如何改变呢,此时就要在触发事件中对这两个值进行赋值了
/* 改变viewModelWithLiveData 中的MutableLiveData,然后就会触发观察者 */viewModelWithLiveData.setEditText_ip("xx.xx.xx.xx");viewModelWithLiveData.setEditText_port("xx");
这两行是写在你需要其触发的地方,例如什么按键的onClick() 方法中
至此,这个LiveData 就布置好了。
最后再回顾一下整体的思路:
> 14. LiveData_第2张图片" width="277" height="574" style="border:1px solid black;">
更多相关文章
- android 开发零起步学习笔记(十一):界面切换+几种常用界面切换效果
- 【Android应用实例之二】跟随手指的小球——自定义View应用
- Android之Http通信
- Android(安卓) Fragmnet的使用新体会
- android项目打包成lib而非jar包的方法
- MonkeyRunner源码分析之与Android设备通讯方式
- Android中IntentService和HandlerThread的分析
- android ViewFlipper使用示例(注册引导页)
- 如何更好地使用EventBus