还是由于一个类中使用xutils进行联网请求,开启了两个线程,导致在得到请求数据之前viewPagerAdapter就已经setAdapter了,setAdapter时getCount是0,但是数据加载完成后,adapter并没有notify,导致异常。确实是由于数据改变了却没有更新adapter。

在构造器中,request()联网请求数据开启了分线程,setAdapter在主线程中直接执行。在viewsDetail加载完成后adapter.notify重写加载就可以了

 private final PagerAdapter adapter = new PagerAdapter() {
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = viewsDetail.get(position);
container.addView(view);
return view;
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
vp_news_pager.removeView((View) object);
} @Override
public int getCount() {
LogUtils.e("TAG" + viewsDetail.size());
return viewsDetail.size();
} @Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
};
private ArrayList<String> newsDetailTitles;
private List<NewsBean.DataEntity.ChildrenEntity> children; public NewsPager(Context context) {
activity = (Activity) context; view = View.inflate(activity, R.layout.news_pager, null);
x.view().inject(this, view);
title_pager = (TextView) view.findViewById(R.id.title_pager); ib_base_pager = (ImageButton) view.findViewById(R.id.ib_base_pager);
ib_base_pager.setVisibility(View.VISIBLE);
ib_base_pager.setOnClickListener(onClickListener);
title_pager.setText("新闻"); request(); vp_news_pager.setAdapter(adapter); } private void initViewsDetail() {
LogUtils.e("传输"); NewsDetailPager newsDetailPager = new NewsDetailPager(activity, children);
View view = newsDetailPager.initView();
viewsDetail.add(view); TopicDetailPager topicDetailPager = new TopicDetailPager(activity);
viewsDetail.add(topicDetailPager.initView());
PhotosDetailPager photosDetailPager = new PhotosDetailPager(activity);
viewsDetail.add(photosDetailPager.initView());
InteractDetailPager interactDetailPager = new InteractDetailPager(activity);
viewsDetail.add(interactDetailPager.initView());
LogUtils.e("传输完成");
} private NewsBean newsBean; private void request() {
RequestParams entity = new RequestParams(ContentUtils.REQUEST);
Callback.CommonCallback<? extends Object> callback = new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
LogUtils.e("request" + result); Gson gson = new Gson();
newsBean = gson.fromJson(result, NewsBean.class);
String title = newsBean.getData().get().getChildren().get().getTitle();
LogUtils.e("title=========" + title); setLeftData(newsBean);
getNewsDetailData(newsBean); } @Override
public void onError(Throwable ex, boolean isOnCallback) {
LogUtils.e("request" + ex);
} @Override
public void onCancelled(CancelledException cex) { } @Override
public void onFinished() {
LogUtils.e("request");
}
};
x.http().get(entity, callback);
} private void getNewsDetailData(NewsBean newsBean) {
children = newsBean.getData().get().getChildren();
int size = children.size();
newsDetailTitles = new ArrayList<>();
for (int i = ; i < size; i++) {
newsDetailTitles.add(children.get(i).getTitle());
LogUtils.e("title===" + children.get(i).getTitle() + size);
}
initViewsDetail();
adapter.notifyDataSetChanged();
}

异常IllegalStateException终于解决了的更多相关文章

  1. Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  2. Java并发编程:Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  3. 【转】Java ConcurrentModificationException异常原因和解决方法

    原文网址:http://www.cnblogs.com/dolphin0520/p/3933551.html Java ConcurrentModificationException异常原因和解决方法 ...

  4. 9、Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  5. PhpStorm 2016.3 For Mac 重大里程碑更新 -- 终于解决了不能输入中文标点符号的重大bug

    PhpStorm 2016.3 For Mac 重大里程碑更新 1.[终于解决了]不能输入中文标点符号的重大bug,如 逗号“,”.“.”: 2.可以在一个窗体中,同时打开多个项目: 3.其他... ...

  6. 终于解决了IE8不支持数组的indexOf方法,array的IndexOf方法

    /* 终于解决了IE8不支持数组的indexOf方法 */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (el ...

  7. HttpClient的CircularRedirectException异常原因及解决办法

    HttpClient的CircularRedirectException异常原因及解决办法 这两天在使用我自己爬虫抓取网页的时候总是出现 org.apache.http.client.ClientPr ...

  8. 【转】终于解决了Apache乱码问题

    之前开放了一个空间,给网友提供电台节目音频下载.由于多年节目的文件数量甚多,且分类没有特定格式,图省事,没有制作网页提供分类下载,而是直接利用Apache的目录浏览功能,简单直观. 不过,所在的美国服 ...

  9. 非常的奇葩,终于解决了硬盘从盘盘符消失的问题 http://bbs.gamersky.com/thread-1712710-1-1.html (出处: 游民星空论坛)

    本人用电脑也十多年了,硬盘的问题也碰到过不少.但最近却碰到了一个很奇葩的问题.就是安装了一块全新的SSD硬盘当从盘,但在装上之后,在我的电脑中却不显示,没有盘符.不过打开系统磁盘管理却能显示硬盘信息. ...

随机推荐

  1. error LNK2019: 无法解析的外部符号

    前些日子电脑系统崩了,重装了了下,原有的项目环境得重新搭建,总是在链接时提示:error LNK2019: 无法解析的外部符号………… 起初以为是库没包含全,可发现不是 有想了下可能是库的包含次序有问 ...

  2. AndroidUI 视图动画-移动动画效果 (TranslateAnimation)

    移动动画效果可以使用 TranslateAnimation; <Button android:id="@+id/btnTranslate1" android:layout_w ...

  3. Xcode7.3.1真机调试ios10

    如果自己的ios测试机不小心升级到比Xcode更高的ios系统, 那么这时候是无法使用真机来进行调试的. 但是我们可以通过拷贝与测试机一样版本的系统来解决这个问题. 去下载一个Xcode8,然后安装, ...

  4. Curious Robin Hood(树状数组+线段树)

    1112 - Curious Robin Hood    PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 64 ...

  5. C# 使用XmlDocument类对XML文档进行操作

    原创地址:http://www.cnblogs.com/jfzhu/archive/2012/11/19/2778098.html 转载请注明出处 W3C制定了XML DOM标准.很多编程语言中多提供 ...

  6. Body joints angle using Kinect

    http://stackoverflow.com/questions/12608734/body-joints-angle-using-kinect-checking-time-interval?rq ...

  7. Android上下左右滑动,显示底层布局

    转载博客地址:http://www.cnblogs.com/flyme2012/p/4106308.html 闲着没事做了一个小东西.Android的上下左右滑动,显示底层布局.可以做类似于QQ消息列 ...

  8. Mock, 让你的开发脱离接口

    在前后台共同进行一个项目的时候常会遇到一种情景, 后台定义好接口,前端按照接口进行开发, 当前端开发完成后台接口却还没有开发完成, 这个时候要进行接口测试, 只能等后台开发完成才能测试, 在这中间浪费 ...

  9. MVC理解

    1:MVC 中的@是什么意思?   类似于<% %>只不过它没有闭合的,这是MVC3.0的新特性2:关于ASP.NET MVC的Html.BeginForm()方法Html.BeginFo ...

  10. JAVA读取propertise配置文件

    java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"key=value"的格式,在pr ...