如何获取给定项目的ViewPager的子视图

Cod*_*ate 22 android android-viewpager

我会尽可能简短而简单地回答这个问题.

View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
Run Code Online (Sandbox Code Playgroud)

当前项为0和1时返回子视图.但如果当前项为2则返回null.这是为什么?

编辑:让我重温一下自己.如何在任何给定项目位置获取ViewPager的子视图?

Cod*_*ate 29

事实证明getChildAt(int)这不是正确的方法.我所做的是检索ViewPager中使用的适配器并从那里找到我的视图:

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

View activeView = fragment.getView();
Run Code Online (Sandbox Code Playgroud)

如前所述,viewPager仅包含当前子节点和相邻子节点(currentItem()+/- 1),除非另有指定 setOffscreenPageLimit()

  • 对于现在进入的任何人来说,getItem不再是pagerAdapter上的方法 (22认同)
  • @Ronnie Troj我在activeView中获取null为什么 (2认同)
  • @Erum调用adapter.instantiateItem(mViewPager,mViewPager.getCurrentItem()); 代替getItem (2认同)

Nik*_*ski 5

您的视图寻呼机适配器最多可容纳2页,即2个视图/片段,其余部分可以回收.在其他情况下,您未提及的是ViewPager中可能有2个页面/视图.

请看 mViewPager.setOffscreenPageLimit()