10 görüntülü bir ViewPager'ım var, web servislerinden (JSON) geliyor, İlk başta ViewPager sorunsuz çalışıyor (ince).ViewPager ilk seferde iyi çalışıyor ancak tekrar yükleme yaparken, java.lang.IllegalStateException hatası alıyor musunuz?
ama ne zaman geri aktivitesinden ve tekrar açmayıbu hata var: Ana Etkinlik sınıfta
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
if (mSlideShowData != null) { // mSlideShowData is An ArrayList of the Images Which I pass to ImagePagerAdapter
adapter = new ImagePagerAdapter(getContext(), mSlideShowData);
slideShowPager.setAdapter(adapter);
//slideShowPager.invalidate();
((PagerAdapter)slideShowPager.getAdapter()).notifyDataSetChanged();
}
else{
Toast toast = Toast.makeText(getContext(), "No Record Found", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
ImagePagerAdapter.java
çözüm içinpublic class ImagePagerAdapter extends PagerAdapter {
private Context mContext;
private ImageLoader mImageLoader; // It's use for downloading the image from server
private ArrayList<SlideShowData> slideShowImages; // In this I have all the detail of the image from API
public ImagePagerAdapter(Context context, ArrayList<SlideShowData> mSlideShowData) {
mContext = context;
slideShowImages = mSlideShowData;
mImageLoader = new ImageLoader(mContext);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@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+"/photos/"+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);
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
}
denedim:
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
//And
slideShowPager.getAdapter().notifyDataSetChanged();
ben stackoverflow var ama işlemesi mümkün değil çözüm.
çalışmak için nelere ihtiyacım var?
Çözüm
earlier I am Passing the ArrayList But this time String Array **(working)** Really I don't know whats the problem with the ArrayList
Daha fazla kod göstermelisiniz. Belki de adaptörü başka bir yerde de değiştirirsiniz. Eğer bir "ArrayAdapter" kullanırsanız, belki de farketmeden adaptöre verdiğiniz "List" 'ü değiştirdiniz –
Bunun için Arrayadapter kullanmıyorum "PagerAdapter" ViewPager'daki tüm görüntüleri ayarlamak için kullanıyor @MichaelButscher –
@MichaelButscher + 1 Benim durumumda sorun buydu, ipucu için çok teşekkür ederim! – AgentKnopf