Android 在viewpager中的当前位置之前和之后添加片段

Android 在viewpager中的当前位置之前和之后添加片段,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我有一个ViewPager,其中包含片段。我想在当前位置之前和之后添加片段。下面是适配器: public class TabManager extends FragmentStatePagerAdapter { private final List<Fragment> list = new ArrayList<>(); public TabManager(FragmentManager fragmentManager) { super(

我有一个
ViewPager
,其中包含
片段
。我想在当前位置之前和之后添加片段。下面是适配器:

public class TabManager extends FragmentStatePagerAdapter {

    private final List<Fragment> list = new ArrayList<>();

    public TabManager(FragmentManager fragmentManager) {
        super(fragmentManager);
    }

    @Override
    public int getItemPosition(Object object) {
        if (object instanceof  Fragment) {
            return list.indexOf(object);
        }
        return POSITION_NONE;
    }

    @Override
    public Fragment getItem(int position) {
        return list.get(position);
    }

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

    public void addFragment(Fragment fragment, int index) {
        list.add(index, fragment);
        notifyDataSetChanged();
    }

}
我在右侧添加了一个新的,但第一个保持聚焦:

1 2

^
现在,如果我在左侧添加另一个,它会立即聚焦(这是我不想要的):

这应该是正确的:

3 1 2

  ^

抱歉,由于声誉问题,无法发表评论。 如果您的当前位置为0(1个片段),并且您将片段添加到右侧,则当前项目位置不会更改-0(添加的片段不会更改它)

但是如果将片段添加到左侧(在片段1之前),适配器的当前位置仍然是0,该位置上的片段现在是片段3,而不是片段0。所以,我想在通知适配器之前,您应该将适配器的位置更改为所需的项目(如果您添加after-do-nothing,如果您添加before-correct-you-position)。
在您的情况下-将当前适配器位置设置为1而不是0。

抱歉,由于信誉问题,无法发表评论。 如果您的当前位置为0(1个片段),并且您将片段添加到右侧,则当前项目位置不会更改-0(添加的片段不会更改它)

但是如果将片段添加到左侧(在片段1之前),适配器的当前位置仍然是0,该位置上的片段现在是片段3,而不是片段0。所以,我想在通知适配器之前,您应该将适配器的位置更改为所需的项目(如果您添加after-do-nothing,如果您添加before-correct-you-position)。 在您的情况下-将当前适配器位置设置为1而不是0

3 1 2

^  
3 1 2

  ^