Как заставить мой ViewPager загружать только одну страницу за раз, т.е. setOffscreenPageLimit (0);

Я понимаю, что самое низкое число, которое я могу дать setOffscreenPageLimit(int) равно 1. но мне нужно загружать одну страницу за раз, потому что проблемы с памятью.

Должен ли я использовать старый стиль tabhost и т. Д.? или есть способ / взломать я могу заставить мой viewPager загружать одну страницу за раз?

Мой адаптер расширяет BaseAdapter с помощью паттерна ViewHolder.

5 Solutions collect form web for “Как заставить мой ViewPager загружать только одну страницу за раз, т.е. setOffscreenPageLimit (0);”

У меня была такая же проблема, и я нашел решение для нее:

шаги:

1) Сначала загрузите class CustomViewPager из этой ссылки.

2) Используйте этот class, как указано ниже:

В Java:

 CustomViewPager mViewPager; mViewPager = (CustomViewPager) findViewById(R.id.swipePager); mViewPager.setOffscreenPageLimit(0); 

В XML:

  

Теперь загружается только одна страница.

Насколько я знаю, это невозможно при использовании ViewPager . По крайней мере, нет, когда вы хотите, чтобы ваши страницы были удачными.

Поэтому объяснение очень просто:

Когда вы прокручиваете между двумя страницами, есть точка, когда обе страницы должны быть видимыми, поскольку вы не можете прокручивать между двумя вещами, когда один из них даже не существует в этой точке.

См. Этот вопрос для большего: ViewPager.setOffscreenPageLimit (0) работает не так, как ожидалось

CommonsWare дала хорошее объяснение в комментариях к его ответу .

но мне нужно загрузить одну страницу за раз, потому что проблемы с памятью.

Это предполагает, что вы получаете OutOfMemoryError s.

Должен ли я использовать старый стиль tabhost и т. Д.?

Да, или FragmentTabHost , или вкладки панели действий.

или есть способ / взломать я могу заставить мой viewPager загружать одну страницу за раз?

Нет, по той простой причине, что ViewPager требуется более одной страницы за раз скользящую анимацию. Вы можете увидеть это, используя ViewPager и ViewPager .

Или вы можете работать над исправлением проблем с памятью. Предполагая, что это приложение является тем же, о котором вы сообщали ранее , вы используете только 7 Мбайт кучи пространства. Это приведет только к OutOfMemoryError s, если ваша оставшаяся куча сильно fragmentирована. Существуют страtagsи управления памятью (например, inBitmap для BitmapOptions для создания растровых изображений из внешних источников), которые помогают решать такие проблемы fragmentации.

Мой адаптер расширяет BaseAdapter с помощью паттерна ViewHolder.

BaseAdapter предназначен для использования с AdapterView , а не ViewPager .

Вы можете использовать FragmentStatePagerAdapter . Это позволяет пейджеру удерживать гораздо меньше памяти. Он полностью удаляет экземпляры fragmentов из FragmentManager, когда они недоступны. Состояние удаленных fragmentов сохраняется внутри FragmentStatePagerAdapter. Экземпляр fragmentа воссоздается после возврата к существующему элементу, и состояние восстанавливается.

 public static class MyAdapter extends FragmentStatePagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return NUM_ITEMS; } @Override public Fragment getItem(int position) { return ArrayListFragment.newInstance(position); } } 

Я знаю, что это старый пост, но я наткнулся на эту проблему и нашел хорошее исправление, если вы загружаете fragmentы. Просто проверьте, видит ли пользователь fragment или нет, переопределяя setUserVisibleHint (). После этого загрузите данные.

  @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { getData(1, getBaseUrl(), getLink()); } } 
  • Бесконечная прокрутка Image ViewPager
  • Interesting Posts

    mcrypt устарел, какова альтернатива?

    Каков правильный способ перегрузить operator == для иерархии classов?

    Как отключить перенаправление ссылок на результат поиска Google (щелкните правой кнопкой мыши) в Chrome?

    Есть ли простой способ создания ординалов в C #?

    смешение cout и printf для более быстрого вывода

    Неизвестный процесс linux со случайной командой

    Атрибуты HttpPost и HttpGet в MVC: зачем использовать HttpPost?

    Как узнать размер сжатых / несжатых файлов на btrfs?

    Является ли флеш-накопитель значительной проблемой?

    Получить список всех активных сеансов в ASP.NET

    Как создать резервную копию профиля пользователя и восстановить его в Windows 7?

    MVC3 и First First Migrations – «модель, поддерживающая контекст« blah », изменилась с момента создания базы данных»

    HTML 5 Видео растяжка

    Прочитайте содержимое zipped-файла без извлечения?

    Как изменить значение по умолчанию для совместного использования экрана / номера порта VNC в Mac OS X?

    Давайте будем гением компьютера.