【发布时间】:2018-08-07 22:55:16
【问题描述】:
我有一个TabLayout(来自设计库),它通过FragmentPagerAdapter 填充了2 个片段(它们都包含一个项目列表)。
这两个列表是相互关联的:它们都包含一个人,一个人在哪个列表中,决定了他/她是否被提名。 您可以将成员从一个列表滑动到另一个列表,反之亦然。
问题
我想/需要在标签标题中显示一个计数(该特定列表中有多少人)。
很简单,我在getPageTitle 中添加了一些代码,它工作正常。
在我更改列表之前,我需要告诉FragmentPagerAdapter 再次更新其标题:它不会。
到目前为止,我找到的唯一解决方案是致电:mTabLayout.setTabsFromPagerAdapter(mAdapter);
这个方法所做的就是removeAllTabs,然后循环遍历FragmentPagerAdapter 拥有的那些,将它们添加为新的。
这适用于标题,但效率不高,但最重要的是:它会强制第一个选项卡再次成为选定项目,从第二个选项卡滑动时这不是一个很好的体验。
我尝试在mTabLayout.setTabsFromPagerAdapter(mAdapter); 调用之后添加mViewPager.setCurrentItem(int item),但这不起作用。
我也尝试过
mAdapter.notifyDataSetChanged();
tabLayout.invalidate();
没有效果。
【问题讨论】:
-
您可以尝试将
setCurrentItem()发布到处理程序中或直接发布到ViewPager,或者如果您知道要更改的标题索引,请使用tabLayout.getTabAt(index)。 -
哇,不知道我怎么错过了
getTabAt(index) method