关于ListView、ViewPager等在setAdapter后getChildCount为0

做项目的时候发现ViewPager在setAdapter后,立即加载数据,会出现空指针。紧跟setAdapter后Log,发现getChildCount为1,只有最开始添加的PagerTabStrip这个子View。
而adapter内:
 
 此段明显是往ViewPager(即container)内添加了childView。但为什么获取到的子View数量还是为1呢,而换个地方打印数量又对了。
原来 setAdapter操作是异步的,不是同步的。
添加如下代码测试:
 得到Log结果:
 说明setAdapter后并没有立即执行到instantiateItem方法,即没有添加进ViewPager。可能原因是childView还没有创建好。
从上图看出,在执行instantiateItem方法后,childView被添加进了ViewPager,得到数量即Bingo!
解决方法:
viewPager.setAdapter(pagerAdapter); 
	viewPager.post(new Runnable() {
            
	        @Override
	          public void run() {
	         if (viewPagerViewList.size() == viewPager.getChildCount()-1)  {
	                //对 viewpager中的child进行操作的代码
	        	 loadListViewData(0);
	             }
	           }
	      });

你可能感兴趣的:(android应用开发基础)