Back to project page InfiniteViewPager.
The source code is released under:
Copyright (c) 2012 Antony Tran Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Softwa...
If you think the Android project InfiniteViewPager listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.antonyt.infiniteviewpager; /* www. jav a 2s . co m*/ import android.database.DataSetObserver; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; import android.util.Log; import android.view.View; import android.view.ViewGroup; /** * A PagerAdapter that wraps around another PagerAdapter to handle paging wrap-around. */ public class InfinitePagerAdapter extends PagerAdapter { private static final String TAG = "InfinitePagerAdapter"; private static final boolean DEBUG = true; private PagerAdapter adapter; public InfinitePagerAdapter(PagerAdapter adapter) { this.adapter = adapter; } @Override public int getCount() { // warning: scrolling to very high values (1,000,000+) results in // strange drawing behaviour return Integer.MAX_VALUE; } /** * @return the {@link #getCount()} result of the wrapped adapter */ public int getRealCount() { return adapter.getCount(); } @Override public Object instantiateItem(ViewGroup container, int position) { int virtualPosition = position % getRealCount(); debug("instantiateItem: real position: " + position); debug("instantiateItem: virtual position: " + virtualPosition); // only expose virtual position to the inner adapter return adapter.instantiateItem(container, virtualPosition); } @Override public void destroyItem(ViewGroup container, int position, Object object) { int virtualPosition = position % getRealCount(); debug("destroyItem: real position: " + position); debug("destroyItem: virtual position: " + virtualPosition); // only expose virtual position to the inner adapter adapter.destroyItem(container, virtualPosition, object); } /* * Delegate rest of methods directly to the inner adapter. */ @Override public void finishUpdate(ViewGroup container) { adapter.finishUpdate(container); } @Override public boolean isViewFromObject(View view, Object object) { return adapter.isViewFromObject(view, object); } @Override public void restoreState(Parcelable bundle, ClassLoader classLoader) { adapter.restoreState(bundle, classLoader); } @Override public Parcelable saveState() { return adapter.saveState(); } @Override public void startUpdate(ViewGroup container) { adapter.startUpdate(container); } @Override public CharSequence getPageTitle(int position) { int virtualPosition = position % getRealCount(); return adapter.getPageTitle(virtualPosition); } @Override public float getPageWidth(int position) { return adapter.getPageWidth(position); } @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { adapter.setPrimaryItem(container, position, object); } @Override public void unregisterDataSetObserver(DataSetObserver observer) { adapter.unregisterDataSetObserver(observer); } @Override public void registerDataSetObserver(DataSetObserver observer) { adapter.registerDataSetObserver(observer); } @Override public void notifyDataSetChanged() { adapter.notifyDataSetChanged(); } @Override public int getItemPosition(Object object) { return adapter.getItemPosition(object); } /* * End delegation */ private void debug(String message) { if (DEBUG) { Log.d(TAG, message); } } }