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
^