今天学习的时候爆出了这样一个关于 ViewPager 的错误:
The application's PagerAdapter changed the adapter's contents without calling
PagerAdapter#notifyDataSetChanged!
找了好长时间发现是我将数据源的初始化放在了加载适配器之后:
private void initView() {
vp = (ViewPager) findViewById(R.id.viewpager);
vp.setAdapter(new MyPagerAdapter());
}
private void initData() {
list.add(new Ad(R.drawable.a,"巩俐不低俗,我就不能低俗"));
list.add(new Ad(R.drawable.b,"朴树有回来了,再唱经典老歌引万人同唱"));
list.add(new Ad(R.drawable.c,"揭秘北京电影如何升级"));
list.add(new Ad(R.drawable.d,"乐视网TV版大放送"));
list.add(new Ad(R.drawable.e,"热血屌丝的反杀"));
}
我将initView方法在initData方法之前执行了,所以当vp.setAdapter(new MyPagerAdapter());这一句执行的时候,数据源并没有初始化完毕,
所以才出现了这样一个错误。
另外我后面在百度的时候发现有个哥们说如果不这样处理,
更新Adapter的内容和,应该调用adapter的notifyDataSetChanged方法,否则在ADT22以上使用会报这个错
http://www.sjsjw.com/100/008991MYM031425/