屏幕更改后ViewPager中的页面错误

时间:2014-05-28 14:36:42

标签: android android-viewpager

我在更改方向后恢复正确的ViewPager页面时遇到问题。

CONCEPT:

我有ViewPager,最初设置为8页。

它有OnPageCHangeListener,当用户到达第5页时,我从服务器获取数据并向ViewPager添加另外8页。

所以每7页我再添加8页,就会让它变得无穷无尽。这是听众代码:

      ViewPager mPager = (ViewPager) findViewById(R.id.frame);
      mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {

            if(arg0 % 7) {
                addPagesToViewPagerAdapter(isMainPage);
            }

        }

这是我的ViewPager适配器代码:

public class FullImageAdapter extends FragmentStatePagerAdapter {

private static ArrayList<Main> response;

public FullImageAdapter(android.support.v4.app.FragmentManager fm,
        ArrayList<Main> resp) {
    super(fm);
    response = resp;
}

@Override
public int getCount() {
    return response.size();
}
@Override
public int getItemPosition(Object object) {
    return POSITION_NONE;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
    return super.instantiateItem(container, position);
}
@Override
public Fragment getItem(int position) {
    return FullImageFragment.newInstance(response.get(position));
}

public void addPages(ArrayList<Main> resp) {
    response.addAll(resp);
}

}

我在Activity中也有onConfigurationChaged,它包含ViewPager片段。

public void onConfigurationChanged(android.content.res.Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

问题:

问题在于在方向改变时显示正确的ViewAdapter页面。

例如:

在开始时,ViewPager中有8个页面。

用户滚动到第3页,然后更改方向,显示第3页。一切正常。

问题是当在9页f.ex到9日之后使用滚动时(当时有16页,因为在第7页我们又增加了8页)当他在第9页改变方向时,显示第8页,这是坏。

总结一下:

改变方向:

  • 在第3位 - 显示为3 - 好
  • 在第7位 - 显示为7 - 好
  • 在第8位 - 显示为8 - 好
  • 在位置9处 - 显示为8-BAD
  • 在第10位 - 显示为8 - BAD

似乎处理方向更改的任何事情都不知道我添加了更多页面,并且它显示了在开始时适配器中的最后一页。

这仅影响更改方向,当用户“正常”滚动时,一切都很好。 我还使用不同的布局进行陆地和水平方向。

我该如何解决这个问题?

0 个答案:

没有答案