AndroidViewModel

目录

实例化ViewModel判断

try {
    graffitiViewModel = ViewModelProviders.of((FragmentActivity) getContext()).get(GraffitiCanvasModel.class);graffitiViewModel.createGraffitiSaveDialog(getContext());
} catch (ClassCastException exception) {
    throw new ClassCastException("Please ensure that the provided Context is a valid FragmentActivity");
}

介绍

  1. AndroidViewModel实际使用时总是和MutableLiveData结合使用,大部分使用都是在FragmentActivity或者Fragment中,但是千万不要认为它只能在它们里面使用。

  2. 当你有一个复杂的自定义View或者有一组某个模块的自定义View,可以为其单独添加一个AndroidViewModel来进行对数据的管理。这里推荐一个mapbox的一个官方项目来学习,github链接: https://github.com/mapbox/mapbox-navigation-android,其中的自定义ViewNavigationView.java和它的ViewModelNavigationViewModel.java就是很好的例子。

  3. 当你改变数据想刷新界面时,你只需要利用AndroidViewModel获取到其中的MutableLiveData对象,再利用它的setValue()方法修改数据即可,只要你对它进行observe()方法的观察,原理类似于RXJavaObservable的观察。当然你不需要观察,只想在某个时机拿到里面的值来判断,用getValue()方法即可。

3.1 实例MutableLiveData

public final MutableLiveData<Boolean> isCreateNew = new MutableLiveData<>();

3.2 设置新数据

isCreateNew.setValue(true);

3.3 监测数据变化

LifecycleOwner owner = (LifecycleOwner) getContext();
viewModel.isCreateNew.observe(owner, new Observer<Boolean>() {
            @Override
            public void onChanged(Boolean createNew) {
                if (createNew) {
                    //TODO 相应界面变化
                } else {
                    //TODO 相应界面变化
                }
            }
        });

3.4 获取当前数据内容

boolean createNew = viewModel.isCreateNew.getValue();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值