关于ListView、ViewPager等在setAdapter后getChildCount为0
2013-12-17 16:45
288 查看
做项目的时候发现ViewPager在setAdapter后,立即加载数据,会出现空指针。紧跟setAdapter后Log,发现getChildCount为1,只有最开始添加的PagerTabStrip这个子View。
而adapter内:
![](http://img1.ph.126.net/DJy_q62cmN3BItXGR640fA==/6598063725169813393.png)
此段明显是往ViewPager(即container)内添加了childView。但为什么获取到的子View数量还是为1呢,而换个地方打印数量又对了。
原来setAdapter操作是异步的,不是同步的。
添加如下代码测试:
![](http://img1.ph.126.net/MLaYG9mRt49k80b3UuEHZw==/1865334670761535960.png)
得到Log结果:
![](http://img1.ph.126.net/KDxf2ZouCl7a1vFUcroN_g==/6597390824054052880.jpg)
说明setAdapter后并没有立即执行到instantiateItem方法,即没有添加进ViewPager。可能原因是childView还没有创建好。
从上图看出,在执行instantiateItem方法后,childView被添加进了ViewPager,得到数量即Bingo!
解决方法:
而adapter内:
![](http://img1.ph.126.net/DJy_q62cmN3BItXGR640fA==/6598063725169813393.png)
此段明显是往ViewPager(即container)内添加了childView。但为什么获取到的子View数量还是为1呢,而换个地方打印数量又对了。
原来setAdapter操作是异步的,不是同步的。
添加如下代码测试:
![](http://img1.ph.126.net/MLaYG9mRt49k80b3UuEHZw==/1865334670761535960.png)
得到Log结果:
![](http://img1.ph.126.net/KDxf2ZouCl7a1vFUcroN_g==/6597390824054052880.jpg)
说明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); } } });
相关文章推荐
- listview在setadapter之后如果立马获取getchildcount则是为0的
- 关于ListView的setEmptyView没效果的问题
- Android关于ListView中的getItemViewType与getViewTypeCount
- Listview:Cannot add header view to list -- setAdapter has already been called
- 关于Listview的ListView.setEmptyView后下拉刷新闪现的问题
- BaseAdapter里关于getItemViewType和getTypeCount的用法
- 关于Viewpager设置setOffscreenPageLimit引起的效果和问题
- ListView和BaseAdapter的getViewTypeCount和getItemViewType方法实现Gridview,显示多列
- 关于Fragment中定义一个ListView,然后给这个ListView添加header(ViewPager)的问题
- [Android] ListView关于adapter多种view设置
- 关于ListView的setEmptyView()设置空白页方法
- 关于ListView和ViewPager的一个Bug
- Andriod之Adapter的getViewTypeCount和getItemViewType为Listview的item设置不同的布局
- 关于ListView的上方如何增加一个Viewpager,实现整体上下滑动
- Adapter的getViewTypeCount和getItemViewType及-ListView
- PullToRefresh ScrollView的Listview和轮播图ViewPagerAdapter的配置
- 关于ListView在setAdapter()后,getChildCount总是0的原因
- 关于ViewPager、PagerAdapter、FragmentStatePagerAdapter
- 像适配ListView一样适配ViewPager的的PagerAdapter
- Android ListView Adapter的getItemViewType和getViewTypeCount多种布局