title: How to force ViewPager to re-instantiate its items
body: <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>