异常IllegalStateException终于解决了
还是由于一个类中使用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终于解决了的更多相关文章
- Java ConcurrentModificationException异常原因和解决方法
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...
- Java并发编程:Java ConcurrentModificationException异常原因和解决方法
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...
- 【转】Java ConcurrentModificationException异常原因和解决方法
原文网址:http://www.cnblogs.com/dolphin0520/p/3933551.html Java ConcurrentModificationException异常原因和解决方法 ...
- 9、Java ConcurrentModificationException异常原因和解决方法
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...
- PhpStorm 2016.3 For Mac 重大里程碑更新 -- 终于解决了不能输入中文标点符号的重大bug
PhpStorm 2016.3 For Mac 重大里程碑更新 1.[终于解决了]不能输入中文标点符号的重大bug,如 逗号“,”.“.”: 2.可以在一个窗体中,同时打开多个项目: 3.其他... ...
- 终于解决了IE8不支持数组的indexOf方法,array的IndexOf方法
/* 终于解决了IE8不支持数组的indexOf方法 */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (el ...
- HttpClient的CircularRedirectException异常原因及解决办法
HttpClient的CircularRedirectException异常原因及解决办法 这两天在使用我自己爬虫抓取网页的时候总是出现 org.apache.http.client.ClientPr ...
- 【转】终于解决了Apache乱码问题
之前开放了一个空间,给网友提供电台节目音频下载.由于多年节目的文件数量甚多,且分类没有特定格式,图省事,没有制作网页提供分类下载,而是直接利用Apache的目录浏览功能,简单直观. 不过,所在的美国服 ...
- 非常的奇葩,终于解决了硬盘从盘盘符消失的问题 http://bbs.gamersky.com/thread-1712710-1-1.html (出处: 游民星空论坛)
本人用电脑也十多年了,硬盘的问题也碰到过不少.但最近却碰到了一个很奇葩的问题.就是安装了一块全新的SSD硬盘当从盘,但在装上之后,在我的电脑中却不显示,没有盘符.不过打开系统磁盘管理却能显示硬盘信息. ...
随机推荐
- Python导入模块的三种形式
Python导入模块的3中方式: 1.import module_name 这样在程序里就可以通过module_name.metnod_name()的方式访问模块里的函数了 Example: > ...
- aix puppet agent
demo控制脚本tel,150 5519 8367 Running Puppet on AIX Puppet on AIX is… not officially supported, yet stil ...
- json具体解释
<span style="font-size:12px;">function testJson() { var jsonData = { "firstName ...
- ASP.NET MVC4 json序列化器
ASP.NET MVC4中调用WEB API的四个方法 2012年06月07日00:05 it168网站原创 作者:廖煜嵘 编辑:景保玉 我要评论(0) [IT168技术]当今的软件开发中,设计软件的 ...
- VS2010中xercesc配置及简单示例
从官网下载xerces-c-3.1.1并解压,打开工程项目 xerces-c-3.1.1\projects\Win32\VC10\xerces-all\xerces-all.sln, 选择Xerces ...
- java 获取两个日期相差的毫秒数
方法一可以使用date的getTime()方法来将当前日期格式的时间转换为毫秒数,进而相减. long systime = new Date().getTime();//当前系统时间 l ...
- .net通用权限框架B/S (五)--WEB(1)首页
通用权限框架--web 首页 1.首页截图 2.首页views 布局分为三部分top,left,main 引入easyui和jquery的js以及相关的css 使用easyui进行布局,分区代码bod ...
- Oracle视图,序列及同义词、集合操作
一.视图(重点) 视同的功能:一个视图其实就是封装了一个复杂的查询语句.1.创建视图的语法:CREATE VIEW 视图名称 AS 子查询 范例:创建一个包含了20部门的视图CREATE VIEW e ...
- CentOS7与Win7双系统引导问题
先安装的Win7,后安装的CentOS7,结果系统引导就只有CentOS7了.记得以前CentOS6.x系列没这个问题,主要是由于CentOS7.x使用grub2的原因吧. 方案一:使用Win PE. ...
- new String[0]的作用
返回包含此 collection 中所有元素的数组:返回数组的运行时类型与指定数组的运行时类型相同.如果指定的数组能容纳 该 collection,则返回包含此 collection 元素的数组.否则 ...