使用ViewPager时报出The application’s PagerAdapter changed the adapter’s contents without calling PagerAda
2014-11-27 23:00
344 查看
当你使用ViewPager来显示网络图片时,为了用户体验良好,所以你会一边下载一边更新Adapter。这个时候如果你的ADT版本是22以上的时候,你一定很纠结:我明明调用了adapter.notifyDataSetChanged,但是这货竟然还是报出
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged!
下面我们来先看看问题:(定位问题)
在ADT22中,上面的代码肯定会报错的。为什么?看下官方文档对 support/v4/view/PagerAdapter 的一个解释:
PagerAdapter supports data set changes. Data set changes must occur on the main thread and must end with a call to
to AdapterView adapters derived from
出错原因:数据更新必须在main thread进行更新!!结束前还得调用 notifyDataSetChanged() !!
解决方法:
把你往集合里面添加数据的代码写到main thread 里面。
如果你使用asynctask
那么你更新集合的代码
一定不能在 doInBackground
方法里面。
如果你使用new Thread , 你的更新集合的代码一定不能在run 里面,要在Handler 里面
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged!
下面我们来先看看问题:(定位问题)
在ADT22中,上面的代码肯定会报错的。为什么?看下官方文档对 support/v4/view/PagerAdapter 的一个解释:
PagerAdapter supports data set changes. Data set changes must occur on the main thread and must end with a call to
notifyDataSetChanged()similar
to AdapterView adapters derived from
BaseAdapter.
出错原因:数据更新必须在main thread进行更新!!结束前还得调用 notifyDataSetChanged() !!
解决方法:
把你往集合里面添加数据的代码写到main thread 里面。
如果你使用asynctask
那么你更新集合的代码
一定不能在 doInBackground
方法里面。
如果你使用new Thread , 你的更新集合的代码一定不能在run 里面,要在Handler 里面
相关文章推荐
- The application’s PagerAdapter changed the adapter’s contents without calling PagerA
- The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDat
- The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDat
- The application's PagerAdapter changed the adapter's contents without calling notifyDataSetChanged
- The application's PagerAdapter changed the adapter's contents without calling Pagapter
- The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDat
- The application’s PagerAdapter changed the adapter’s contents without calling PagerAdapter#notifyDa
- 有关viewPager错误The application's PagerAdapter changed the adapter's contents without calling PagerAdap
- The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDat
- ViewPager异步添加数据异常 The application's PagerAdapter changed the adapter's contents without calling Pag
- The application's PagerAdapter changed the adapter's contents without calling PagerAdapter
- 】The application’s PagerAdapter changed the adapter’s contents without calling PagerAdapter#notifyDa
- PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged
- java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents witho
- 异常:IllegalStateException: The application's PagerAdapter changed the adapter's contents
- 解决java.lang.IllegalStateException: The application’s PagerAdapter changed the adapter’s content
- 常见错误之java.lang.IllegalStateException: The application’s PagerAdapter changed the adapter’s cont。。。
- ViewPager报java.lang.IllegalStateException,without calling PagerAdapter#notifyDataSetChanged!
- (ListView使用错误)The content of the adapter has changed but ListView did not receive anotification
- ViewPager中使用FragmentPagerAdapter.notifyDataSetChanged无法更新当前Fragment解决方案