viewPager使用时加载数据时显示IllegalStateException异常,解决不了。。。。

从newsPager中得到newsDetailTitles标题的详细内容,这是通过构造器传过来的。打印日志78行能打印,45行打印出来共size是12.但是程序出现了异常java.lang.IllegalStateException: The application‘s PagerAdapter changed the adapter‘s contents without calling PagerAdapter#notifyDataSetChanged。

从网上查询的结果是adapter中的数据改变了,却没有重新加载数据,需要在数据改变之后adapter.notifyDataSetChanged。但是找不到数据改变的地方。今天太累了,这个bug找到答案时再写。

 1 package com.atguigu.beijingnews2.pager.newsdetailpager;
 2
 3 import android.app.Activity;
 4 import android.content.Context;
 5 import android.support.v4.view.PagerAdapter;
 6 import android.support.v4.view.ViewPager;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 import android.widget.TextView;
10
11 import com.atguigu.beijingnews2.R;
12 import com.atguigu.beijingnews2.utils.LogUtils;
13
14 import org.xutils.view.annotation.ViewInject;
15 import org.xutils.x;
16
17 import java.util.ArrayList;
18
19 /**
20  * Created by Administrator on 2016/2/18.
21  */
22 public class NewsDetailPager {
23     private Activity activity;
24     @ViewInject(R.id.vp_news_detail_paper)
25     private ViewPager vp_news_detail_paper;
26     private ArrayList<String> newsDetailTitles=new ArrayList<>() ;
27     private PagerAdapter adapter = new PagerAdapter() {
28         @Override
29         public Object instantiateItem(ViewGroup container, int position) {
30             LogUtils.e("TAG");
31 //            String title = newsDetailTitles.get(position);
32 //            textView.setText(title);
33             container.addView(views.get(position));
34             return views.get(position);
35         }
36
37         @Override
38         public void destroyItem(ViewGroup container, int position, Object object) {
39             LogUtils.e("TAG");
40             container.removeView((View) object);
41         }
42
43         @Override
44         public int getCount() {
45             LogUtils.e("TAG" + newsDetailTitles.size());
46
47             return newsDetailTitles.size();
48         }
49
50         @Override
51         public boolean isViewFromObject(View view, Object object) {
52             LogUtils.e("TAG");
53             return view == object;
54         }
55     };
56     private TextView textView;
57     ArrayList<View> views = new ArrayList<>();
58     public NewsDetailPager(Context context, ArrayList<String> newsDetailTitles ) {
59         activity = (Activity) context;
60         this.newsDetailTitles=newsDetailTitles;
61 //        initView();
62
63
64     }
65
66
67
68     public View initView() {
69         View view = View.inflate(activity, R.layout.news_detail_paper, null);
70         x.view().inject(this, view);
71         for (int i = 0; i < newsDetailTitles.size(); i++) {
72             TextView textView = new TextView(activity);
73             textView.setText(newsDetailTitles.get(i));
74             views.add(textView);
75             LogUtils.e("TAG");
76         }
77 //        textView = new TextView(activity);
78         LogUtils.e("TAG");
79         vp_news_detail_paper.setAdapter(adapter);
80         return view;
81     }
82 }
E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com.atguigu.beijingnews2, PID: 1622
                                                                        java.lang.IllegalStateException: The application‘s PagerAdapter changed the adapter‘s contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 0, found: 4 Pager id: com.atguigu.beijingnews2:id/vp_news_pager Pager class: class com.atguigu.beijingnews2.view.NoScrollViewPager Problematic adapter: class com.atguigu.beijingnews2.pager.NewsPager$2
                                                                            at android.support.v4.view.ViewPager.populate(ViewPager.java:999)
                                                                            at android.support.v4.view.ViewPager.populate(ViewPager.java:951)
                                                                            at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1473)
                                                                            at android.view.View.measure(View.java:16497)
                                                                            at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
                                                                            at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
                                                                            at android.view.View.measure(View.java:16497)
                                                                            at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1488)
                                                                            at android.view.View.measure(View.java:16497)
                                                                            at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
                                                                            at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
                                                                            at android.view.View.measure(View.java:16497)
                                                                            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
                                                                            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                                                                            at android.view.View.measure(View.java:16497)
                                                                            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
                                                                            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                                                                            at android.view.View.measure(View.java:16497)
时间: 2024-10-06 03:39:11

viewPager使用时加载数据时显示IllegalStateException异常,解决不了。。。。的相关文章

XE7 &amp; FMX 那些年我们一起上过的控件:ListView 之 (2) 加载数据时如何显示进度条

本文介绍一下ListView下如何加载数据.及使用进度条反馈当前进度给用户. 注意: 原创作品,请尊重作者劳动成果,转载请注明出处!!!原文永久固定地址:http://www.cnblogs.com/weii/p/4190694.html 我们先来看看效果图: 进度条需要这样用的,以下为本文参考代码: procedure TForm1.Button2Click(Sender: TObject); begin TThread.CreateAnonymousThread( procedure() v

XE7 &amp; FMX 那些年我们一起上过的控件:ListView 之 (3) 加载数据时如何显示自定义样式

本文介绍一下ListView下如何加载数据.及使用进度条反馈当前进度给用户. 注意: 原创作品,请尊重作者劳动成果,转载请注明出处!!!原文永久固定地址:http://www.cnblogs.com/weii/p/4190719.html 我们先来看看效果图: FMX异常强大,我们可以发挥想像,自定义进度样式,以下为本文参考代码: procedure TForm1.Button3Click(Sender: TObject); var pe: TPie; //扇形作进度 rc: TRoundRec

ListView用法及加载数据时的闪烁问题和加载数据过慢问题

ListView介绍及添加数据时的闪烁问题 1.     ListView类 1.1 ListView常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置行和列之间是否显示网格线.(默认为false)提示:只有在Details视图该属性才有意义. (3)AllowColumnReorder:设置是否可拖动列标头来对改变列的顺序.(默认为false)提示:只有在Details视

uwp开发:Pivot控件在加载数据时的一些细节性问题

最近在做一款汽车资讯.新闻.参数查询的客户端,里面多处用到了网络请求以及列表显示,所以我采用Pivot的方式显示各项的内容,如图所示: 但是每一项的网络请求Api是不同的,所以要发送不同的网络请求.由于Pivot是在同一个page下进行展示的,所以,我不得不考虑一个问题: 就是Pivot的这样的加载方式对数据请求到底是怎么影响的?多项是同时加载的吗?这样会对性能有要求吗? 带着这些疑问,我做了下测试,在每个PivotItem的Loaded事件处设置断点,进行调试,发现只要进入这个page,所有P

img 图片加载出错时 显示默认图片

在 img 标签 加上onerror="onerror=null;src='123.jpg'" ,即当图片加载失败时会自动加载123.jpg ,例如 <img src="abc.jpg" onerror="onerror=null;src='123.jpg'" /> 也可省略部分 <img src="abc.png" onerror=src="123.png" >

angular6 页面加载数据时的loading提示

使用npm安装ngx-loading模块 npm install --save ngx-loading 在app.module.ts中导入模块 import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { NgxLoadingModule } from 'ngx-loading'; @NgModule({ ... imports: [ ..

Android利用Volley异步加载数据(JSON和图片)完整示例

Android利用Volley异步加载数据(JSON和图片)完整示例 MainActivity.java package cc.testvolley; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v

Android仿美团加载数据 小人奔跑进度动画对话框(附顺丰快递员奔跑效果)

我们都知道在Android中,常见的动画模式有两种:一种是帧动画(Frame Animation),一种是补间动画(Tween Animation).帧动画是提供了一种逐帧播放图片的动画方式,播放事先做好的图像,与gif图片原理类似,就像是在放电影一样.补间动画可以实现View组件的移动.放大.缩小以及渐变等效果. 今天我们主要来模仿一下美团中加载数据时小人奔跑动画的对话框效果,取个有趣的名字就是Running Man,奔跑吧,兄弟!话不多少,先上效果图,让各位大侠看看是不是你想要实现的效果,然

Android中ListView分页加载数据

熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们今天就要讲一讲列表组件ListView加载数据的相关内容.通常来说,一个应用在展现大量数据时,不会将全部的可用数据都呈现给用户,因为这不管对于服务端还是客户端来说都是不小的压力,因此,很多应用都是采用分批次加载的形式来获取用户所需的数据.比如:微博客户端可能会在用户滑动至列表底端时自动加载下一页数据,也可能在底部放置一个“加载更多”按钮,用户点击后,加载