动态更新Design Support TabLayout的标题



是否有一种方法来动态更新一个标签的标题在设计支持TabLayout?我尝试在适配器中添加一个方法,该方法更改了保存选项卡标题的ArrayList的内容,并通知适配器,但选项卡标题不会更改为新标题。

适配器:

public class TabAdapter extends FragmentPagerAdapter {
    private final List<Fragment> fragments = new ArrayList<>();
    private final List<String> fragmentTiles = new ArrayList<>();
    public TabAdapter(FragmentManager fm) {
        super(fm);
    }
    public void addFragment(Fragment fragment, String title) {
        fragments.add(fragment);
        fragmentTiles.add(title);
    }
    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }
    @Override
    public int getCount() {
        return fragments.size();
    }
    @Override
    public CharSequence getPageTitle(int position) {
        return fragmentTiles.get(position);
    }
    public void setFragmentTiles(int index, String title) {
        fragmentTiles.set(index, title);
        Log.e("ARRAY", fragmentTiles.toString());
    }
}

我正在像这样改变标题数组列表的内容:

adapter.setFragmentTiles("New title 1");
adapter.setFragmentTiles("New title 2");
adapter.notifyDataSetChanged();

但这不起作用。我是否必须更新ViewPager或TabLayout ?

对我来说有效的是在标签上使用setText方法:

。tab.setText(…);//其中…是CharSequence或resId

查看TabLayout可用的方法,您可以获得所需的索引/位置的Tab实例:

。tabLayout.getTabAt(…);//其中…是int。

据我所知,在适配器上调用notifyDataSetChanged()只是调用适配器的getCount(),而不是人们可能期望的刷新标题。

希望这对你有所帮助,或者至少为你指明了正确的方向。

最新更新