Хобрук: Ваш путь к мастерству в программировании

Получить дочерние представления текущих выбранных элементов в Viewpager

Когда я получаю дочерний вид из элементов с 0 по 2 в viewpager, он работает нормально. Когда я пытаюсь получить дочернее представление с 3 и далее, он возвращает ноль. Как я могу получить все текущие выбранные дочерние представления viewpager?

Отредактировано:

View view = viewPager.getChildAt(viewPager.getCurrentItem());

Когда viewPager.getCurrentItem() достигает значения 3, представление возвращает значение null.


  • Можете ли вы опубликовать код, который вы используете, чтобы уточнить вопрос? 16.03.2017
  • сколько фрагментов вы загружаете внутри viewpager? 16.03.2017
  • @JaydeepPatel 5 16.03.2017
  • может это поможет вам stackoverflow.com/questions /8785221/ 16.03.2017
  • Я думаю, что просмотры, которые вы пытаетесь получить, еще не загружены. Вы можете использовать метод void setOffscreenPageLimit(int limit) из ViewPager, чтобы установить, сколько страниц хранится в памяти по обе стороны от текущей. 16.03.2017
  • но если я установлю большее значение для screenpagelimit, памяти будет много или нет? 16.03.2017

Ответы:


1

Вам необходимо получить доступ к Fragments, который вы используете в своем ViewPager.

В этом ответе https://stackoverflow.com/a/39274141/1559852 я попытался объяснить, как изменить адаптер ViewPager's o сделать фрагменты, которые вы используете в своем ViewPager, доступными.

После того, как вы реализовали код в ссылке, вы сможете получить доступ к своим фрагментам и их представлениям.

Определите общедоступный метод для ваших фрагментов, как показано ниже:

public View getMyFragmentView(){
     return this.mView();
}

Наконец, добавьте OnPageChangeLsitener к вашему ViewPager, как показано ниже.

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            // Here's your instance
            final YourFragment fragment =(YourFragment)yourPagerAdapter.getRegisteredFragment(position); 
            final View theViewYouWantToAccess = yourFragment.getMyView();

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

Изменить: в вашем адаптере ViewPager вы можете зарегистрировать Fragment в SparseArray

@Override
public Fragment getItem(int position) {
     final YourFragment fragment = new YourFragment();

     // Register your fragment to Sparse Array here
     registeredFragments.put(position, fragment);

     return fragment;
}
16.03.2017
  • Спасибо за ваш ответ. Но как я могу сначала инициировать весь свой фрагмент в sparseArray? 16.03.2017
  • вам это не нужно. просто добавьте его в свой разреженный массив, когда вы возвращаете новый фрагмент в методе getItem вашего адаптера. я отредактирую свой ответ. 16.03.2017
  • Спасибо, попробую =) 16.03.2017
  • это сработает. если у вас есть проблемы, пожалуйста, дайте мне знать, чтобы помочь вам. если это сработает, я буду рад, если вы примете мой ответ. Спасибо. 16.03.2017
  • Новые материалы

    5 проектов на Python, которые нужно создать прямо сейчас!
    Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..