Android: Circular ViewPager

Recently I was building an Android Application and needed a circular ViewPager. That is a ViewPager that will automatically move to the first page when you swipe the last. Apparently there is no Native Support for this, neither could I find any good implementation online.

So here is a simple but effective way to do this.

The idea is basically to apply the functionality to the PagerAdapter you will insert in the ViewPager. What you do is create a huge set of Pages (lets say 10000) and set the current page in the middle.

So here it is:

 * Created by Chris Georgoulis on 8/3/2014.
public class ImageAdapter extends PagerAdapter {

	public static final int PAGER_PAGES = 10000;
	public static final int PAGER_PAGES_MIDDLE = PAGER_PAGES / 2;

	private List drawables;

	public ImageAdapter(List drawables) {
		this.drawables = drawables;

	public int getCount() {

		int count;
		if (drawables == null || drawables.isEmpty()) {
			count = 0;
		} else if (drawables.size() == 1) {
			count = 1;
		} else {
			count = PAGER_PAGES;
		return count;

	public boolean isViewFromObject(View view, Object o) {
		return view == o;

	public Object instantiateItem(ViewGroup container, int position) {

		View layout = null;

		//get current drawable
		position = position - PAGER_PAGES_MIDDLE;
		int imageNumber = position % drawables.size();

		if (imageNumber == 0) {
			imageNumber = 0;
		} else if (imageNumber < 0) {
			imageNumber += drawables.size();

		Drawable drawable = drawables.get(imageNumber);

		if (container.getContext() != null) {

			LayoutInflater inflater = 
                              (LayoutInflater) container.getContext()

			View layout = 
                              mInflater.inflate(R.layout.image_pager_simple, mContainer, false);

		if (layout != null && mContainer.getResources() != null) {

			ImageView iv = (ImageView) layout.findViewById(;


		return layout;

	public void destroyItem(ViewGroup container, int position, Object object) {
		container.removeView((View) object);


Dont forget to set your currentItem in the ViewPager in the Middle of the number of pages:

Somewhere in your Activity Class you would have a method like this:

private void initViewPager(List list) {

		ViewPager viewPager = (ViewPager) findViewById(;
		ImageAdapter adapter = new ImageAdapter(list);

As always any suggestions are more than welcome 🙂

Chris Georgoulis

Chris Georgoulis

– Primary programming language: Java SE (SWING, JDBC), Java EE, (JSF – PrimeFaces, JPA – EclipseLink/Hibernate, EJB, CDI ),
– Secondary languages: C/C++, Web Technologies(HTML, XHTML, XML, CSS, JavaScript, jQuery, AngularJS).
– Frameworks: Android SDK, Global Sensors Network (GSN), Open Computer Vision (OpenCV).
– IDE’s: Eclipse, Visual Studio
– Other Apps: MS Office, Photoshop, Dreamweaver
– Database Design – SQL(MySQL), NoSQL(MongoDB)
– Modeling Tools: UML

More Posts