【问题标题】:Binding won't update TabLayout custom title view绑定不会更新 TabLayout 自定义标题视图
【发布时间】:2017-01-22 09:53:50
【问题描述】:

在 MvvmCross 4.x 中,我创建了一个带有自定义 Views 作为标题/标题的 Android TabLayout。 自定义Views 绑定到一些文本和一个数字(显示为徽章)。

一切正常。但是,当更新(增加)徽章的数量时,选项卡标题视图将不会跟随。 我需要为标题创建自定义绑定,但我认为我在这里做错了。

在标签FragmentViewModels 创建后,我使用以下代码:

var bindingContext = new MvxAndroidBindingContext(Context, (IMvxLayoutInflaterHolder)Context,
    FragmentStatePagerAdapter.TryGetTabViewModel(tabIndex));
var view =  bindingContext.BindingInflate(tabTitleResourceId, null);

var tab = TabLayout.GetTabAt(tabIndex);
tab.SetCustomView(view);

然后视图(选项卡标题)刷新一次,但不再刷新。

任何想法为什么视图没有更新?

我使用MvxFragment(来自支持库)和MvxCachingFragmentStatePagerAdapter,如果这很重要的话。

【问题讨论】:

    标签: android data-binding mvvmcross


    【解决方案1】:

    解决方案是让 MvxAndroidBindingContext 在某处保持活动状态。

    因此,以下不是很好的代码应该可以工作。

    var bindingContext = new MvxAndroidBindingContext(Context(IMvxLayoutInflaterHolder)Context,
    FragmentStatePagerAdapter.TryGetTabViewModel(tabIndex));
    tabCachedBindingsList.Add(bindingContext);
    var view =  bindingContext.BindingInflate(tabTitleResourceId, null);
    
    var tab = TabLayout.GetTabAt(tabIndex);
    tab.SetCustomView(view);
    

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      相关资源
      最近更新 更多