我有点难以理解使用 viewmodel 和 livedata 的关系 b/w。我希望有人能为我解释一下。我是 Android 开发的新手。
对于 MVVM 架构,它看起来像这样:您使用数据创建模型,在视图模型中访问和更改它(在 LiveData 的实例中)。并在视图(活动/片段)中观察它。
MainViewModel extends ViewModel{
MutableLiveData<String> someStringObject = new MutableLiveData<>;
private void someMethod{
someStringObject.setValue("For main thread");
someStringObject.postValue("For back thread");
}
public MutableLiveData<String> getSomeStringObject(){
return someStringObject;
}
}
FragmentA extends Fragment{
@BindView(R.id.tv) //ButterKnife
TextView someTV;
private MainViewModel mainViewModel;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
//getting viewModel
mainViewModel = ViewModelProviders.of(getActivity()).get(MainViewModel.class);
//registering observer
mainViewModel.getSomeStringObject.observe(this, value ->{
someTV.setText(value);
});
}
}
通过这种方式,您可以对视图中的 ViewModel 更改做出反应。现在,如果在 mainViewModel 中更改了 getSomeStringObject,它将在 FragmentA 中自动更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句