还是由于一个类中使用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. [mysqldumpslow 报错] Died at /usr/local/mysql/bin/mysqldumpslow line 161, &lt;&gt; chunk 236.

    mysqldumpslow报错:Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236. 总结:是由于top数目 ...

  2. Acess错误:"文件共享锁定数溢出"

    对于ACCESS数据库,如果通过大量的SQL来操作数据库或者直接操作大量的数据时,经常会出现这种错误: "文件共享锁定数溢出" 原因如下:     Access数据库,同时操作大量 ...

  3. jquery设置文本框值 与获取文本框的值

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. rem vh vw vmin vmax ex ch

    rem 我们首先介绍下和我们熟悉的很相似的货.em 被定义为相对于当前对象内文本的字体大小.如果你给body小哥设置了font-size字体大小,那么body小哥的任何子元素的1em就是等于body设 ...

  5. 使用PowerDesigner创建数据库表图文并茂版

    使用PowerDesigner创建数据库表图文并茂版 使用PowerDesigner 建数据库表. 一直很忙,没有时间写东西.这次搞点会声会色的,嘿嘿 此技能为项目经理必备技能. 本次主角: 1.在w ...

  6. Excal数据转化成Asset数据文件

    我们知道,在Unity当中的文件都可以称之为Asset文件,在项目开发当中需要把数据读取来之后存放起来,而有的数据是不可以改变的,今天就来写一个demo处理一下这些数据,在这里就不写读取Excal数据 ...

  7. 关于新装ubuntu系统update失败和build-essential失败的解决办法

    我是12月4日在新电脑上的vmware-workstation 10 上安装的ubuntu14.04LTS,但安装后再校园环境下总是build-essential失败,上网一查,说是要先update, ...

  8. Windows中的对象

    来源  http://www.0xaa55.com/forum.php?mod=viewthread&tid=1401&extra=page%3D1  windows里常用句柄操作资源 ...

  9. Python核心编程读笔 11:模块

    第12章 模块 1.基本概念 模块的文件名就是模块名字.py 每个模块都定义了自己唯一的名称空间 模块的搜索路径:会被保存在 sys 模块的 sys.path 变量里 >>>sys. ...

  10. 内存管理之三——Cocos2d-x学习历程(七)

    1.容器---2.0版本 Cocos2d-x引擎为我们提供了CCArray.CCDictionary等Objective-C风格的容器.使用Cocos2d-x容器的一个重要原因在于Cocos2d-x的 ...