通过上一节:Android >> 12. ViewModel 状态保存,我们知道一个activity的数据可以被ViewModel 单独管理,但是数据对UI 界面的驱动还是由Controler 进行控制,所以我们需要在ViewModel 中增加一个LiveData 用来实现数据对UI 界面的直接驱动,从而减少Controler 的工作。

> 14. LiveData_第1张图片" width="400" height="321" style="border:1px solid black;">

对新建ViewModel 类的操作

  1. 首先在java 文件同级目录中新建一个类并继承自ViewModel,例如ViewModelWithLiveData,其负责存储和管理LiveData

  2. 然后在ViewModelWithLiveData 类中创建需要管理的LiveData:
    我在此创建了两个MutableLiveData 变量

private MutableLiveData<String> LikedNumber_ip;private MutableLiveData<String> LikedNumber_port;
  1. 创建对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 文件程序的操作

  1. 定义了一个类,当然就要对其进行实例化
    首先在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;">

更多相关文章

  1. android 开发零起步学习笔记(十一):界面切换+几种常用界面切换效果
  2. 【Android应用实例之二】跟随手指的小球——自定义View应用
  3. Android之Http通信
  4. Android(安卓)  Fragmnet的使用新体会
  5. android项目打包成lib而非jar包的方法
  6. MonkeyRunner源码分析之与Android设备通讯方式
  7. Android中IntentService和HandlerThread的分析
  8. android ViewFlipper使用示例(注册引导页)
  9. 如何更好地使用EventBus

随机推荐

  1. MySQL慢查日志的开启方式与存储格式详析
  2. MySQL 使用DQL命令查询数据的实现方法
  3. MySQL5.6解压版服务无法启动之系统错误10
  4. MySQL InnoDB MRR优化指南
  5. MySQL索引不会被用到的情况汇总
  6. MySQL性能优化神器Explain的基本使用分析
  7. CentOS 安装redis和MySQL
  8. 简单谈谈MySQL数据透视表
  9. MySQL中USING 和 HAVING 用法实例简析
  10. MYSQL数据库表结构优化方法详解