标签:
从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)
viewPager使用时加载数据时显示IllegalStateException异常,解决不了。。。。
标签:
原文地址:http://www.cnblogs.com/chienhsu/p/5199502.html