Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to force ViewPager to re-instantiate its items
    text
    copied!<p>I am using <code>ViewPager</code> to allow user to swipe between its views. Is there a way how to force this <code>ViewPager</code> to reload/re-instantiate its views in case that they are no longer valid or needs to be refreshed? I tried to call <code>notifyDataSetChanged()</code> on its adapter but this does not invoke <code>instantiateItem()</code> method again.</p> <h2>EDIT</h2> <p>Here is the class that extends from ViewPager and its adapter definision. Bellow is the <code>refresh()</code> method that I call when I want to force to refresh items. </p> <pre><code>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 &lt; 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(); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload