Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get the child View of a ViewPager at a given item

I'll keep the question as short and simple as humanly possible.

View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem()); 

returns the child view when the current item is 0 and 1. But if the current item is 2 it returns null . Why is that?

edit: Let me rephrase myself. How do I get the child View of a ViewPager at any given item position?

like image 506
CodePrimate Avatar asked May 12 '13 20:05

CodePrimate


People also ask

How do I use ViewPager?

You can create swipe views using AndroidX's ViewPager widget. To use ViewPager and tabs, you need to add a dependency on ViewPager and on Material Components to your project. To insert child views that represent each page, you need to hook this layout to a PagerAdapter .

Is PagerAdapter view from object?

The method isViewFromObject identifies whether a page View is associated with a given key object. A very simple PagerAdapter may choose to use the page Views themselves as key objects, returning them from instantiateItem after creation and adding them to the parent ViewGroup.


1 Answers

It turns out getChildAt(int) was not the right approach. What I did was retrieve the Adapter used in the ViewPager and found my views from there:

adapter = mViewPager.getAdapter(); Fragment fragment = adapter.getItem(mViewPager.getCurrentItem());  View activeView = fragment.getView(); 

As already noted the viewPager will only contain the current child and adjacent children(currentItem() +/- 1) unless otherwise specified through setOffscreenPageLimit()

like image 185
CodePrimate Avatar answered Sep 19 '22 14:09

CodePrimate