У меня есть небольшая проблема: у меня есть ViewPager с некоторыми страницами, и я использую FragmentStatePagerAdapter для обработки данных. В портрете у меня есть, например, 20 страниц для ViewPager и в ландшафте у меня всего 10 страниц для ViewPager. Поэтому при изменении ориентации я создаю новый адаптер с разными данными.
Вот небольшое объяснение, почему: я показываю одно изображение в портрете и два в пейзаже, но всегда все в расчете. Если у меня есть 10 картин, чтобы показать, у меня есть 10 в портрете и 5 в ландшафте (всегда два).
Но теперь у меня странная ошибка: Когда я нахожусь в Пейзаже по индексу 5 и поверните устройство, текущая страница ViewPager будет установлена на 10. Если я верну его снова, я на странице 5. Если я проведу теперь ViewPage на стр. 10, то метод getID элемента никогда не вызывал, и ViewPage показывает мне один портретный портрет, а не два для пейзажа. Как это может произойти? Есть ли кеш в адаптере или ViewPager? В onCreate Activity все новое созданное, адаптер, а также данные (только строки с контуром) для ViewPager. Итак, любая идея, как исправить эту действительно страшную "особенность"?
Вот какой код:
OnCreate:
mViewPagerAdapter = new ReaderPageViewAdapter(getSupportFragmentManager(), getBaseContext(), mCurrentDocument.mPages, getResources()
.getConfiguration().orientation);
mPageReader = (ReaderViewPager) findViewById(R.id.pager);
mPageReader.setAdapter(mViewPagerAdapter);
адаптер getItem:
public Fragment getItem(final int index) {
final PageInfo pageInfo = mPages.get(index);
final PageFragment pageFragment = (PageFragment) PageFragment
.instantiate(mContext, pageInfo.mClss.getName(), pageInfo.mArgs);
return pageFragment;
}
Если вам нужно что-то еще, просто скажите мне. Благодаря