java.lang.IllegalStateException:ViewPager

时间:2016-01-25 09:53:20

标签: java android exception android-viewpager

我的应用程序从服务器获取所有图片网址并将其保存到ArrayList,并在ViewPager中显示这些图片。但它会生成IllegalStateException。适配器如下:

public class FullScreenImageAdapter extends PagerAdapter {

    private Context _activity;
    private ArrayList<String> _imagePaths;
    private LayoutInflater inflater;

    // constructor
    public FullScreenImageAdapter(Context activity,
                                  ArrayList<String> imagePaths) {
        this._activity = activity;
        this._imagePaths = imagePaths;
    }

    @Override
    public int getCount() {
        return this._imagePaths.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ImageView imgDisplay;

        inflater = (LayoutInflater) _activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View viewLayout = inflater.inflate(R.layout.item, container,
                false);

        imgDisplay = (ImageView) viewLayout.findViewById(R.id.cardImage);

            Picasso.with(_activity).load(_imagePaths.get(position)).into(imgDisplay);


        ((ViewPager) container).addView(viewLayout, 0);

        return viewLayout;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ImageView) object);

    }
}

适配器创建为

FullScreenImageAdapter adapter=new FullScreenImageAdapter(FullScreenActivity.this,all_url);


            viewPager.setAdapter(adapter);

日志如下所示:

 java.lang.IllegalStateException: The application's PagerAdapter
> changed the adapter's contents without calling
> PagerAdapter#notifyDataSetChanged! Expected adapter item count: 1,
> found: 3 Pager id: com.wat.clickzy:id/view_pager Pager class: class
> android.support.v4.view.ViewPager Problematic adapter: class
> com.wat.clickzy.FullScreenImageAdapter

请帮帮我

1 个答案:

答案 0 :(得分:1)

每当您向notifysetdatachanged添加/删除内容时,您需要在adapter上使用adapter来致电{1}}。

更清晰地看here