您的位置:首页 > 移动开发

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents witho

2017-02-13 14:11 726 查看
最近项目中出现了一个很奇葩的事情,在修改完数据后,调用自定义的notify方法竟然出现error,提示没有执行notify方法,找了很多资料,没发现问题,最后发现一个网站上有人同样碰到过这种问题,借鉴了他的解决思路,目前正在研究其原理,下做个笔记,以防以后会用到。

解决办法就是在执行更新,要对getcount()方法处理一下,在getcount以前先notify一下,感觉应该问题就是出在这里,两边数据不一致导致的问题,遇到同样问题的胖友不仿也试一下。

错误代码

FATAL EXCEPTION: main

Process: com.soufun.app, PID: 32581

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 3, found: 2 Pager id: com.soufun.app:id/myviewpager Pager class: class com.soufun.app.view.homeslideview.HomeSlideViewPager
Problematic adapter: class com.soufun.app.view.homeslideview.HomeSlideViewPager$1

at android.support.v4.view.ViewPager.populate(ViewPager.java:962)

at android.support.v4.view.ViewPager.populate(ViewPager.java:914)

at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)

at android.view.View.measure(View.java:19138)

at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)

at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)

at android.view.View.measure(View.java:19138)

at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)

at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)

at android.view.View.measure(View.java:19138)

at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)

at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)

at android.view.View.measure(View.java:19138)

at android.widget.ListView.setupChild(ListView.java:1991)

at android.widget.ListView.makeAndAddView(ListView.java:1912)

at android.widget.ListView.fillSpecific(ListView.java:1376)

at android.widget.ListView.layoutChildren(ListView.java:1690)

at android.widget.AbsListView.onLayout(AbsListView.java:2201)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.layout(ViewGroup.java:5550)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)

at android.widget.FrameLayout.onLayout(FrameLayout.java:273)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.layout(ViewGroup.java:5550)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)

at android.widget.FrameLayout.onLayout(FrameLayout.java:273)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.layout(ViewGroup.java:5550)

at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)

at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)

at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.layout(ViewGroup.java:5550)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)

at android.widget.FrameLayout.onLayout(FrameLayout.java:273)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.layout(ViewGroup.java:5550)

at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)

at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)

at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.layout(ViewGroup.java:5550)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)

at android.widget.FrameLayout.onLayout(FrameLayout.java:273)

at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2743)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.layout(ViewGroup.java:5550)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)

at android.widget.FrameLayout.onLayout(FrameLayout.java:273)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.layout(ViewGroup.java:5550)

at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)

at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)

at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.layout(ViewGroup.java:5550)

at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)

at android.widget.FrameLayout.onLayout(FrameLayout.java:273)

at android.view.View.layout(View.java:16980)

at android.view.ViewGroup.l

解决方案:

getCount()中添加如下 并及时将值更改:

if(updateData){

updateData =false ;

notifyDataSetChanged();

}

在自己的upadate方法中先执行一下updateData =true;   

参考问题:点击这里跳转
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐