Comment forcer ViewPager à ré-instancier ses éléments

J’utilise ViewPager pour permettre à l’utilisateur de glisser entre ses vues. Existe-t-il un moyen de forcer ce ViewPager à recharger / ré-instancier ses vues au cas où elles ne seraient plus valides ou devaient être actualisées? J’ai essayé d’appeler notifyDataSetChanged() sur son adaptateur, mais cela n’invoque pas la méthode notifyDataSetChanged() .

MODIFIER

Voici la classe qui s’étend de ViewPager et sa définition d’adaptateur. Ci-dessous est la méthode refresh() que j’appelle lorsque je veux forcer à actualiser des éléments.

 public class DayFlipper extends ViewPager { public class FlipperAdapter extends PagerAdapter { @Override public int getCount() { return DayFlipper.DAY_HISTORY; } @Override public void startUpdate(View container) { } @Override public Object instantiateItem(View container, int position) { Log.d(TAG, "instantiateItem(): " + position); Date d = DateHelper.getBot(); for (int i = 0; i < position; i++) { d = DateHelper.getTomorrow(d); } d = DateHelper.normalize(d); CubbiesView cv = new CubbiesView(mContext); cv.setLifeDate(d); ((ViewPager) container).addView(cv, 0); // add map cv.setCubbieMap(mMap); cv.initEntries(d); return cv; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView((CubbiesView) object); } @Override public void finishUpdate(View container) { } @Override public boolean isViewFromObject(View view, Object object) { return view == ((CubbiesView) object); } @Override public Parcelable saveState() { return null; } @Override public void restoreState(Parcelable state, ClassLoader loader) { } } ... public void refresh() { getAdapter().notifyDataSetChanged(); } } 

Eu le même problème. Pour moi, cela a fonctionné pour appeler

 viewPage.setAdapter( adapter ); 

encore une fois ce qui a provoqué la réintroduction des pages à nouveau.

J’ai trouvé une solution. C’est juste une solution à mon problème, mais actuellement la seule solution.

ViewPager PagerAdapter ne met pas à jour la vue

 public int getItemPosition(Object object) { return POSITION_NONE; } 

Est-ce que quelqu’un sait si c’est un bug ou pas?

 public class DayFlipper extends ViewPager { private Flipperadapter adapter; public class FlipperAdapter extends PagerAdapter { @Override public int getCount() { return DayFlipper.DAY_HISTORY; } @Override public void startUpdate(View container) { } @Override public Object instantiateItem(View container, int position) { Log.d(TAG, "instantiateItem(): " + position); Date d = DateHelper.getBot(); for (int i = 0; i < position; i++) { d = DateHelper.getTomorrow(d); } d = DateHelper.normalize(d); CubbiesView cv = new CubbiesView(mContext); cv.setLifeDate(d); ((ViewPager) container).addView(cv, 0); // add map cv.setCubbieMap(mMap); cv.initEntries(d); adpter = FlipperAdapter.this; return cv; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView((CubbiesView) object); } @Override public void finishUpdate(View container) { } @Override public boolean isViewFromObject(View view, Object object) { return view == ((CubbiesView) object); } @Override public Parcelable saveState() { return null; } @Override public void restoreState(Parcelable state, ClassLoader loader) { } } ... public void refresh() { adapter().notifyDataSetChanged(); } } 

essaye ça.