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个。经过验证不会再报空指针了。
以上是解决办法,希望对遇上的人有所帮助
viewPager的getChildAt为null的解决办法
最新推荐文章于 2023-04-13 21:04:51 发布