【问题标题】:ViewModel + LiveData in Fragment, How to keep data of the ListItemFragment when navigate back from ItemDetailFragmentFragment 中的 ViewModel + LiveData,从 ItemDetailFragment 导航返回时如何保留 ListItemFragment 的数据
【发布时间】:2019-02-26 08:20:05
【问题描述】:

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

viewmodel.getAllItems()

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

【问题讨论】:

    标签: android mvvm viewmodel android-livedata


    【解决方案1】:
    YourItemType yourItems; //define this as global field
    

    在 onCreateView 中;

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

    【讨论】:

    • 我担心的是,它有很多样板代码来检查全局变量,或者检查 LiveData 的 Observe 内部,对吗?将 ViewModel + LiveData 与 Activity 一起使用,我们不必这样做 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 2021-06-09
    • 2019-02-26
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多