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");
}
12345
介绍


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


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


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

3.1 实例MutableLiveData

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

3.2 设置新数据

isCreateNew.setValue(true);
1

3.3 监测数据变化

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

3.4 获取当前数据内容

boolean createNew = viewModel.isCreateNew.getValue();
1

                                    
                
————————————————
版权声明:本文为CSDN博主「Minla」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012551120/article/details/105864884

你可能感兴趣的:(AndroidViewModel)