【问题标题】:MvxRecyclerView does not update after resuming from background从后台恢复后 MvxRecyclerView 不更新
【发布时间】:2019-02-14 14:51:06
【问题描述】:

我有一个 MvxRecyclerView,它被 SearchView 过滤并按 PopupMenu 中的选项排序。如果我在后台运行应用程序并恢复它,则在 PopupMenu 中更改选项不会像在后台运行之前那样对 MvxRecyclerView 中的项目重新排序,但 SearchView 过滤良好,无需排序。

【问题讨论】:

  • 后台处理后,当您在弹出菜单中选择一个项目时,OrderItems 方法是否会被调用 - 如果您设置断点,它会命中吗?当您从后台返回应用程序时,听起来您的绑定没有被补水。能否提供布局代码(axml)和Activity代码?
  • 它确实被调用并且 MvxObservableCollection 被更新。我想也许 NotifyDataSetChanged 没有在 Adapter 上被调用,但在 Fragment 的 OnMenuItemClick 中手动调用它什么也没做。还尝试在没有更改的情况下使 MvxRecyclerView 无效。我将添加布局和片段代码。
  • @pnavk 添加了代码。
  • 您可以尝试删除以下if (savedInstanceState != null) return _layout;。我认为这可能是问题,因为旧布局可能引用过时的绑定
  • 没有变化。问题似乎与绑定无关,因为即使在从后台恢复后,通过 SearchView 进行过滤也可以正常工作。

标签: android-recyclerview xamarin.android mvvmcross


【解决方案1】:

试图解决这个已修复的另一个问题。

我注意到 FragmentInventoryTabView 的 OnResume 每次从后台返回时都会被多次调用,这意味着 ViewModel 和 View 在每次恢复时都会被实例化。它们是在选项卡布局根 ViewModel 的 ctor 中使用 Mvx.IoCProvider.IoCConstruct() 构建的,因此我将这些调用更改为 Mvx.IoCProvider.GetSingleton() 并将 ViewModel 类型注册为 MvxAppStart 中的单例。

现在我可以在从后台恢复后订购 MvxRecyclerView 中的项目。但是 OnResume 仍然被多次调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2014-05-23
    • 2020-04-09
    • 2011-07-21
    • 1970-01-01
    • 2011-03-09
    • 2011-05-23
    相关资源
    最近更新 更多