您的位置:首页 > 其它

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

2013-12-17 16:45 288 查看
做项目的时候发现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);
}
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: