还是由于一个类中使用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. AndroidUI 视图动画-移动动画效果 (TranslateAnimation)

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

  2. javascript第五课表达式

    c#常用的表达式,一般这里都能用上 例如:三元表达式 var text=20>8? 真 : 假;  表达式?true:flase

  3. 构建一个用于产品介绍的WEB应用

    为了让用户更好地了解您的产品功能,您在发布新产品或者升级产品功能的时候,不妨使用一个产品介绍的向导,引导用户熟悉产品功能和流程.本文将给您介绍一款优秀的用于产品介绍的WEB应用. 就像微博或邮箱这类W ...

  4. Oracle表管理

    /*-----------------------创建和管理表-----------------------------*/一.Orcale之中的数据类型:1.NUMBER.DATE.VARCAHR. ...

  5. Java SE基础部分——常用类库之NumberFormat(数字格式化)

    数字格式化常用方法:DecimalFormat和NuberFormat. //2016060524 数字格式化学习 //数字格式化 两种方法 一种直接使用NumberFormat,另一种Decimal ...

  6. EasyUI特殊情况下的BUG整理

    前面有两篇: Easyui - combo[tree,box]下拉图标有间隙bug解决方法 http://blog.csdn.net/isea533/article/details/12996561 ...

  7. Docker镜像与仓库(一)

    Docker镜像与仓库(一) Docker镜像与仓库(一) 如何查找镜像? Docker Hub https://registry.hub.docker.com docker search [OPTI ...

  8. PHP中mktime() 函数对于日期运算和验证

    mktime() 函数对于日期运算和验证非常有用.它可以自动校正越界的输入: // 语法:mktime(hour,minute,second,month,day,year) echo(date('Y- ...

  9. 防抖(Debouncing)和节流(Throttling)

    onscoll防抖封装函数 scroll 事件本身会触发页面的重新渲染,同时 scroll 事件的 handler 又会被高频度的触发, 因此事件的 handler 内部不应该有复杂操作,例如 DOM ...

  10. src 和 href 的区别

    因为理解不深,到写外部加载Javascript文件或者css文件的时候总是需要去找个例子,这样可不好.现在总结下 href 属性规定被链接文档的位置(URL). href是hyperrefresh的缩 ...