Как получить дочерний вид ViewPager для данного элемента
Я буду держать этот вопрос как можно более коротким и простым.
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
возвращает дочерний вид, когда текущий элемент равен 0 и 1. Но если текущий элемент равен 2, он возвращает null
, Это почему?
редактировать: позвольте мне перефразировать себя. Как получить дочерний вид ViewPager в любой заданной позиции элемента?
5 ответов
Оказывается getChildAt(int)
был не правильный подход. Что я сделал, так это извлек адаптер, использованный в ViewPager, и нашел там мои виды:
adapter = mViewPager.getAdapter();
Fragment fragment = adapter.getItem(mViewPager.getCurrentItem());
View activeView = fragment.getView();
Как уже отмечалось, viewPager будет содержать только текущий дочерний элемент и смежные дочерние элементы (currentItem() +/- 1), если иное не указано через setOffscreenPageLimit()
Ваш пейджинговый адаптер просмотра содержит максимум 2 страницы, то есть 2 просмотра / фрагмента, остальные из них переработаны. В другом случае вы не упомянули, что у вас может быть 2 страницы / представления в ViewPager.
Пожалуйста, посмотрите на mViewPager.setOffscreenPageLimit()
Добавить тег в Viewpager Вернуться.
Ниже ссылка поможет вам: /questions/12417211/ne-udalos-poluchit-tekuschij-vid-v-viewpager/12417235#12417235
Во время моих попыток найти способ декорирования представлений Android я думаю, что определил альтернативное решение проблемы OP, которое я задокументировал в своем блоге. Я ссылаюсь на него, так как код кажется слишком сложным для включения всего, что здесь есть.
Решение, которое я предлагаю:
- держит адаптер и вид полностью отделены
- можно легко запросить представление с любым индексом из пейджера представления, и он будет возвращен либо
null
если этот вид в данный момент не загружен или соответствующий вид.
(Этот вопрос очень прост к этому, в котором я разместил тот же ответ).
Сколько детей должно быть?
Также ViewPager загружает не все дочерние объекты одновременно. Только тот, который он показывает, и следующий. Ты можешь использовать mViewPager.setOffscreenPageLimit()
например, 3 или 4, чтобы "предварительно" загрузить больше элементов в просмотрщик.