J'utilise ViewPager
pour permettre à l'utilisateur de glisser entre ses vues. Existe-t-il un moyen de forcer cette ViewPager
pour recharger/réinstancier ses vues au cas où elles ne seraient plus valides ou devraient être actualisées ? J'ai essayé d'appeler notifyDataSetChanged()
sur son adaptateur mais cela n'invoque pas instantiateItem()
de nouveau.
EDIT
Voici la classe qui s'étend de ViewPager et la définition de son adaptateur. Voici le refresh()
que j'appelle lorsque je veux forcer le rafraîchissement 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();
}
}