viewPager的getChildAt为null的解决办法

layoutContent = (ImageLayout) viewPagerImgs.getChildAt(this.currentItem).findViewById(R.id.layoutContent);
if (layoutContent != null ){
    layoutContent.setEditotStatus();

}

但总是说

viewPagerImgs.getChildAt(this.currentItem)这个为空。
其实默认viewpager加载后两个view,滑动超过3个view后,再拿这个view的时候发现是null, mViewPager.getCurrentItem()超过2时就是null了, 这说明viewpager是三个view重复利用
下面说解决办法:
1、在viewpager的listener里的onPageSelected()这个方法里为view设置tag
itemview.settag(currentID);
然后用的时候就只需要根据tag来find出来就好了
View currentView = mViewPager.findViewWithTag(mViewPager.getCurrentItem() 
2、viewpager的adapter中有一个获取当前view的方法:
private View currentView;
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
    super.setPrimaryItem(container, position, object);
    currentView = (View) object;
}
public View getCurrentView(){
    return currentView;
}

3、我自己在项目中这样解决的,因为默认加载后两个view,我把
viewPagerImgs.setOffscreenPageLimit(6);
这样就会加载后面的6个。经过验证不会再报空指针了。


以上是解决办法,希望对遇上的人有所帮助



版权声明:本文为lantier743865原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。