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

最近项目中出现了一个很奇葩的事情,在修改完数据后,调用自定义的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;   

参考问题:点击这里跳转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值