gpt4 book ai didi

android - 在Android的MVVM模式中使用ViewModel和实时数据类是强制性的吗?否则我们可以不使用MVVM模式而使用它们吗?

转载 作者:行者123 更新时间:2023-12-03 11:01:37 24 4
gpt4 key购买 nike

我正在尝试在现有项目中实现MVVM模式。我在看过的许多开发人员网站和教程上感到困惑,但到处都是仅使用实时数据和 View 模型的MVVM模式。好像有可能不使用LiveData和ViewModel就可以使用MVVM模式

问题1 。不使用LiveData和ViewModel就可以使用MVVM模式android吗?
问题2 。不使用LiveData时,将ViewModel扩展到某个类的用途是什么(例如Test类扩展了ViewModel)

我正在做RecyclerView分页以便每次滚动结束时都获得记录集,如下所示


ProfileListViewModel viewModel =
ViewModelProviders.of(this).get(ProfileListViewModel.class);


//to get first set of records
viewModel.getProfileList().observe(this, new Observer<List<Profiles>>() {
@Override
public void onChanged(@Nullable List<Profiles> profiles) {
if (projects != null) {
//…
profileAdapter.setProfiles(profiles);
}
}
});





//to get second set of records

viewModel.getRemaningProfileList().observe(this, new Observer<List<Profiles>>() {
@Override
public void onChanged(@Nullable List<Profiles> profiles) {
if (projects != null) {
//…
profileAdapter.setProfiles(profiles);
}
}
});




问题3 :对于使用MVVM的此功能,我们需要使用上述两个方法调用(两个LiveData对象)每次获取新记录时都要使用其他方法。这让我感到困惑。

问题4 :有时我会再次在SQLite android中插入一些记录,我从头开始调用此方法,例如(viewModel.getProfileList()。observe())...之后

我正在清除当前LiveData并再次设置新记录。是否有任何可能,例如插入/更新记录后将自动刷新数据。

谢谢..

最佳答案

回答1.您可以在不使用LiveData的情况下使用MVVM模式,但是ViewModel是强制性的,因为不使用它,MVVM将毫无意义。 LiveData用于观察在 View 模型内部的变量/方法上进行的 Activity /片段上的更改。

答案2. View 模型用于准备和管理 Activity /片段的数据。对API和其他业务逻辑的调用以类扩展 View 模型编写。这样做是为了实现代码分离。

回答3.如果viewModel.getProfileList()正在获取记录列表,则无需使用viewModel.getRemaningProfileList()即可获取相同的数据。每当数据发生更改时,都会观察并夸大viewModel.getProfileList()处的更改。

答案4.您可以使用“ Activity /框架”的生命周期方法自动接收数据。例如,在一项 Activity 中

onCreate(){
ProfileListViewModel viewModel =
ViewModelProviders.of(this).get(ProfileListViewModel.class);

}
onStart(){
getObservedData();
}
private void getObservedData(){
viewModel.getProfileList().observe(this, new Observer<List<Profiles>>() {
@Override
public void onChanged(@Nullable List<Profiles> profiles) {
if (projects != null) {
//…
profileAdapter.setProfiles(profiles);
}
}
});
}

关于android - 在Android的MVVM模式中使用ViewModel和实时数据类是强制性的吗?否则我们可以不使用MVVM模式而使用它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60391208/

24 4 0
文章推荐: c# - 如何将用户控件属性绑定(bind)到可观察集合中包含的可观察对象的属性
文章推荐: c# - WPF MVVM 短时间显示标签文本
文章推荐: c# - WPF 应用程序中 Controller 的位置是什么
文章推荐: c# - 使用MVVM将List 设置为模型