@Override
 public int getCurrentItem() {
   int position = super.getCurrentItem();
   if (getAdapter() instanceof InfinitePagerAdapterWrapper) {
     InfinitePagerAdapterWrapper infAdapter = (InfinitePagerAdapterWrapper) getAdapter();
     // Return the actual item position in the data backing InfinitePagerAdapter
     return (position % infAdapter.getRealCount());
   } else {
     return super.getCurrentItem();
   }
 }
 private int getOffsetAmount() {
   if (getAdapter() instanceof InfinitePagerAdapterWrapper) {
     InfinitePagerAdapterWrapper infAdapter = (InfinitePagerAdapterWrapper) getAdapter();
     // allow for 100 back cycles from the beginning
     // should be enough to create an illusion of infinity
     // warning: scrolling to very high values (1,000,000+) results in
     // strange drawing behaviour
     return infAdapter.getRealCount() * 100;
   } else {
     return 0;
   }
 }