Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ViewModel+;片段中的LiveData,从ItemDetailFragment返回时如何保留ListItemFragment的数据_Android_Mvvm_Viewmodel_Android Livedata - Fatal编程技术网

Android ViewModel+;片段中的LiveData,从ItemDetailFragment返回时如何保留ListItemFragment的数据

Android ViewModel+;片段中的LiveData,从ItemDetailFragment返回时如何保留ListItemFragment的数据,android,mvvm,viewmodel,android-livedata,Android,Mvvm,Viewmodel,Android Livedata,在ListItemFragment的onCreateView的底部,我进行了一个网络调用以获取所有项目。像这样: viewmodel.getAllItems() 然后,观察数据以将项目填充到RecyclerView。 当用户单击每个项目时,我使用导航架构组件导航到ItemDetailFragment。 问题是,当我点击后退按钮时,ListItemFragment的onCreateView调用再次出现,然后viewmodel.getAllItems()也再次调用。 所以,我想要的是防止再次调用g

在ListItemFragment的onCreateView的底部,我进行了一个网络调用以获取所有项目。像这样:

viewmodel.getAllItems()
然后,观察数据以将项目填充到RecyclerView。 当用户单击每个项目时,我使用导航架构组件导航到ItemDetailFragment。 问题是,当我点击后退按钮时,ListItemFragment的onCreateView调用再次出现,然后viewmodel.getAllItems()也再次调用。 所以,我想要的是防止再次调用getAllItems(),并保持RecyclerView的当前位置

YourItemType yourItems; //define this as global field
在onCreateView中

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle 
  if(yourItems == null){
     yourItems = viewmodel.getAllItems();
  }
}
在onCreateView中

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle 
  if(yourItems == null){
     yourItems = viewmodel.getAllItems();
  }
}

我关心的是,它有很多样板代码来检查全局变量,或者检查LiveData的内部,对吗?在活动中使用ViewModel+LiveData,我们不必这样做:(我关心的是,它有许多样板代码来检查全局变量,或者检查LiveData的观察权限?在活动中使用ViewModel+LiveData,我们不必这样做:(