绑定不会更新 TabLayout 自定义标题视图

Binding won't update TabLayout custom title view

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

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

我在创建选项卡 FragmentViewModel 后使用以下代码:

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

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

然后视图(选项卡 headers)刷新一次,然后就不再刷新了。

知道为什么视图没有更新吗?

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

解决方案是让 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);