ViewPager + Adapter in Fragment => laggy swiping

У меня есть ViewPager с некоторыми фрагментами. Каждый фрагмент имеет ListView в SlidingDrawer (= невидимый перед прокруткой) с помощью ArrayAdapter .

Адаптер установлен на onCreateView() , что замедляет прокрутку, потому что 30 элементов списка приходится загружать каждый раз, когда я прокручиваю, потому что создаются новые фрагменты.

Мой вопрос: можно ли установить адаптер после прокрутки, когда ViewPager ? Или есть лучший способ? Список должен быть уже загружен при расширении SlidingDrawer.

Мой вопрос: возможно ли установить адаптер после прокрутки, когда он находится в режиме ожидания?

Существует OnPageChangeListener который вы можете установить на ViewPager для контроля жестов. Затем вы можете использовать метод onPageSelected() (или onPageScrollStateChanged() для мониторинга текущего состояния), чтобы получать уведомление, когда выбрана новая страница, и начать с этого метода загрузку данных.

Кроме того, убедитесь, что ListView несет ответственность за задержку, а не какую-то другую часть вашего кода.

У меня была аналогичная проблема … Я использовал слушателей. Тем не менее, когда вы прокручиваете две страницы назад, это было лагги … Я делал что-то вроде этого, что улучшало опыт.

 viewpager.setOnPageChangeListener(new OnPageChangeListener() { int positionCurrent; boolean dontLoadList; @Override public void onPageScrollStateChanged(int state) { if(state == 0){ // the viewpager is idle as swipping ended new Handler().postDelayed(new Runnable() { public void run() { if(!dontLoadList){ //async thread code to execute loading the list... } } },200); } } } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { positionCurrent = position; if( positionOffset == 0 && positionOffsetPixels == 0 ) // the offset is zero when the swiping ends{ dontLoadList = false; } else dontLoadList = true; // To avoid loading content for list after swiping the pager. } } 

Если вы заработаете несколько миллисекунд, чтобы загрузить список, который поставляется в качестве дополнения к viewpager, это нормально с точки зрения UX, а не с плохой проверкой … Итак, идея состоит в том, чтобы дождаться 400 мс в потоке, прежде чем загружать Список и убедитесь, что вы на самом деле не загружаете контент, когда пользователь пытается быстро прокрутить, чтобы увидеть содержимое viewpager …

Intereting Posts
Ссылки на приложения не работают на Android Как предотвратить изменение шрифта TextView при изменении стиля шрифта устройства в устройствах Samsung Как обнаружить Android-устройство – 64-битный или 32-битный процессор? Как получить событие Calendar по дате или месяцу в android Как получить диалоговое окно предупреждения по умолчанию на андроиде есть черная тема Добавление Viewpager в качестве заголовка в listView <Ваше приложение> имеет проблемы с сервисами Google Play. При использовании GoogleApiClient он всегда запускается onConnectionFailed Android setOnScrollListner на RecyclerView устарел LinearLayout не устанавливает требуемый атрибут layout_height Как просмотреть личность человека, подписавшего apk на устройстве Android? Редактирование высоты окна EditText Как установить демо-приложение android api в мой телефон Кнопка «Назад» на панели действий IllegalArgumentException: Сервис не зарегистрирован: Увольнение в всплывающем окне Android