0

I have a code which shows images like a gallery using viewpager. I have in total 3 images. When the first image is being displayed i want to swipe right and show the 3rd image, whereas at this moment it is doing nothing. When the first image is displaying it goes to the 2nd image by swiping left, and so on till the third image. Now at when the third image is displaying the same problem is here, that it can go to 2nd but not to the first image at once. Here is my code:

public class ImageAdapter extends PagerAdapter {
    Context context;
    private int[] GalImages = new int[] {
        R.drawable.one,
        R.drawable.two,
        R.drawable.three
    };
    ImageAdapter(Context context){
        this.context=context;
    }
    @Override
    public int getCount() {
      return GalImages.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
      return view == ((ImageView) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
      ImageView imageView = new ImageView(context);
      int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
      imageView.setPadding(padding, padding, padding, padding);
      imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
      imageView.setImageResource(GalImages[position]);
      ((ViewPager) container).addView(imageView, 0);
      return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      ((ViewPager) container).removeView((ImageView) object);
    }
  }

Sorry if i failed in explaining it clearly, i can try once more if anybody didn't understand. Thank-you.

2 Answers2

0

It can't be done with the standard ViewPager if I understand correctly.

There is a library which does this, InfiniteViewPager https://github.com/antonyt/InfiniteViewPager

For more info: ViewPager as a circular queue / wrapping

Community
  • 1
  • 1
LuigiPower
  • 1,113
  • 10
  • 20
  • cant figure out how to implement it in my viewpager code – Milly Corsh Apr 29 '15 at 09:58
  • I haven't ever used this library before. It says on the git README to extend the InfinitePagerAdapter class instead of PagerAdapter. Then replace your ViewPager in XML with com.antonyt.infiniteviewpager.InfiniteViewPager – LuigiPower Apr 29 '15 at 10:04
0

You may use simple view from https://github.com/pozitiffcat/cyclicview
Example:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        CyclicView cyclicView = (CyclicView) findViewById(R.id.cyclic_view);
        cyclicView.setAdapter(new CyclicAdapter() {
            @Override
            public int getItemsCount() {
                return 10;
            }

            @Override
            public View createView(int position) {
                TextView textView = new TextView(MainActivity.this);
                textView.setText(String.format("TextView #%d", position + 1));
                return textView;
            }

            @Override
            public void removeView(int position, View view) {
                // Do nothing
            }
        });
    }
}