4

我想用 PagerSlidingTabStrip 将 Fragment 添加到 FragmentStatePagerAdapter 的中间。但是我只能在适配器的末尾添加新的 Fragnent。这是代码:

public class TabsPagerAdapter extends FragmentStatePagerAdapter {
    private ArrayList<String> TABS = new ArrayList<String>();

    public TabsPagerAdapter(FragmentManager fm) {
        super(fm);
        TABS.add("First");
        TABS.add("Second");
        TABS.add("Third");
    }


    @Override
    public Fragment getItem(int position) {
        return CardFragment.newInstance(position);
    }

    @Override
    public Parcelable saveState() {
        return super.saveState();
    }

    @Override
    public int getCount() {
        return TABS.size();
    }


    @Override
    public String getPageTitle(int position) {
        return TABS.get(position);
    }


}

这是我添加新片段的地方

adapter.TABS.add(1, "ffff");

adapter.notifyDataSetChanged();

int k = viewPager.getCurrentItem();
viewPager.setCurrentItem(k + 1);

pagerSlidingTabStrip.notifyDataSetChanged();
4

1 回答 1

0

我遇到了类似的问题,我setAdapter()之前通过再次调用来解决它setCurrentItem,否则它永远不会更新,直到列表滚动到索引 middleIndex+2:

viewPager.setAdapter(adapter);
viewPager.setCurrentItem(middleIndex);
于 2017-03-27T19:58:10.867 回答