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

时间:2016-09-14 14:29:20

标签: android data-binding mvvmcross

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

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

创建标签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);

然后,View(标题标题)会刷新一次,但不会再刷新。

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

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

1 个答案:

答案 0 :(得分: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);