0

I am calling a Pager Adapter from my Activity. I am getting the data from the JSON and passing into the ArrayList mSlidedata

ImagePagerAdapter adapter = new ImagePagerAdapter(mContext, mSlideData);
slideShowPager.setAdapter(adapter);
slideShowPager.setCurrentItem(0);

ImagePagerAdapter is the class where I extends the PagerAdapter. Here is the code:

public class ImagePagerAdapter extends PagerAdapter {
private Context mContext;
private ImageLoader mImageLoader;
private ArrayList<SlideData> slideShowImages;

public ImagePagerAdapter(Context context, ArrayList<SlideData> mSlideShowData) {
    mContext = context;
    slideShowImages = mSlideShowData;
    mImageLoader = new ImageLoader(mContext);
}

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

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

@Override
public Object instantiateItem(ViewGroup container, int position) {
    ImageView imageViewSlideShow = new ImageView(mContext);
    int padding = mContext.getResources().getDimensionPixelSize(R.dimen.padding_medium);
    imageViewSlideShow.setPadding(padding, padding, padding, padding);
    imageViewSlideShow.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
    mImageLoader.DisplayImage(ServiceURLs.URL+slideShowImages.get(position).photo_name, R.drawable.loading, imageViewSlideShow);
    ((ViewPager) container).addView(imageViewSlideShow, 0);
    return imageViewSlideShow;
}

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

here is all code what I use to implement for the PagerAdapter

Problem: When activity start Ist time run Fine but when I back and reload the Activity again error

LogCat Detail:

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged!

Expected adapter item count: 10, found: 0 Pager id: com.akm.demo.activities:id/slideShowPager Pager class: class android.support.v4.view.ViewPager

Alternative Solution : Passing the ArrayList into the String Array

 for (int i = 0; i < mSlideData.size(); i++)
 {
     slideImagesArray[i] = ServiceURLs.URL+mSlideData.get(i).photo_name;
 }  
 adapter = new ImagePagerAdapter(mContext, imagesStringArray);
 slideShowPager.setAdapter(adapter);
 slideShowPager.setCurrentItem(0);

Works fine no problem occur from String Array.

So, Why problem happen during the ArrayList and String Array works fine ??

Akarsh M
  • 1,629
  • 2
  • 24
  • 47

0 Answers0