动态更新Design Support TabLayout标签页标题

5
有没有一种方法可以动态更新Design Support TabLayout标签的标题?我尝试在Adapter中添加一个方法,该方法更改保存选项卡标题的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());
    }
}

我正在更改标题ArrayList的内容,方法如下:

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

但这并不起作用。我需要更新ViewPager或TabLayout吗?
1个回答

5
我的建议是在选项卡上使用setText方法:

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

查看TabLayout可用的方法,您可以获取所需标签的索引/位置:

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

据我所知,在适配器上调用notifyDataSetChanged()只会调用适配器的getCount(),而不是刷新标题,希望这能帮到您或者至少指导您正确的方向。

1
谢谢,我会尽快尝试。 - qwertz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接