还是由于一个类中使用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. magento中取不同store中的产品数据

    $products = Mage::getResourceModel('catalog/product_collection')                    ->setStoreId( ...

  2. iOS第三方开源库的吐槽和备忘(转)

    原文:http://www.cocoachina.com/industry/20140123/7746.html 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽.   目前比较活跃的社区 ...

  3. 佩特来项目经验小集合(2)___组合查询存储过程,报错 &quot;varchar JBID=&#39;&#39; 转换成数据类型 int 时失败&quot;

       今天写一个组合查询的存储过程遇到这样一个问题:在将 varchar 值 'SELECT * FROM View_DLS_WXJD_Customer WHERE 1=1 and JBID ='' ...

  4. Android开发8:UI组件TextView,EditText,Button

    版本:Android4.3 API18 学习整理:liuxinming TextView 概述 TextView直接继承了View(EditText.Button两个UI组件类的父类) TextVie ...

  5. 编程好帮手----CodeSmith Generator Studio

    这是一个很好用的代码生成器,可以将数据库中的表生成类,这是和表中的字段一一对应这就很给力了,方便准确

  6. MongoDB无法启动的解决方法

    http://dmyz.org/archives/423 遇到MongoDB突然无法启动,第一反应是删除mongod.lock.这个文件在MongoDB的数据库目录下,默认是/data/db.这是最常 ...

  7. BZOJ 1570: [JSOI2008]Blue Mary的旅行( 二分答案 + 最大流 )

    二分答案, 然后对于答案m, 把地点分成m层, 对于边(u, v), 第x层的u -> 第x+1层的v 连边. 然后第x层的u -> 第x+1层的u连边(+oo), S->第一层的1 ...

  8. Flink资料(7) -- 背压监控

    背压(backpressure)监控 本文翻译自Back Pressure Monitoring --------------------------------------------------- ...

  9. 《转》读discuzx3.1 数据库层笔记

    最近开始在看discuzx3.1的代码,看到数据库层的实现,discuzx的数据库层能够支撑数据库分库,分布式部署,主要水平分表,也可以很方便的支持其他数据库.性能上,可以做读写分离,支持数据缓存.可 ...

  10. 编写一个程序实现strcpy函数的功能

    #include <stdio.h> #include <string.h> #define N 5 char *mycpy(char *s1, char *s2) { //数 ...