Android ViewPager Prev/Next Button

后端 未结 9 927
北荒
北荒 2020-12-08 04:00

Okay, so I\'m developing an Android app that utilises a ViewPager to display pages.

Within each page, I have a set of buttons to use for navigating between pages (in

9条回答
  •  鱼传尺愫
    2020-12-08 04:48

    A failproof upgrade to sweggersen's and Alex Orlov's answer,

    // For scrolling to next item
    nextPageButton.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View view) {
            viewPager.setCurrentItem(getNextPossibleItemIndex(1), true);
        }
    });
    
    // For scrolling to previous item
    previousPageButton.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View view) {
            viewPager.setCurrentItem(getNextPossibleItemIndex(-1), true);
        }
    });
    

    Add getNextPossibleItemIndex() method in your Activity/Fragment,

    private int getNextPossibleItemIndex (int change) {
    
        int currentIndex = viewPager.getCurrentItem();
        int total = viewPager.getAdapter().getCount();
    
        if (currIndex + change < 0) {
            return 0;
        }
    
        return Math.abs((currentIndex + change) % total) ;
    }
    

    This way, you will be able to change currentItem without worrying about IndexOutOfBoundsException as suggested by Heinrich's comment. Note that using this method, items will be displayed like a circular list.

    1 -> 2 -> 3 -> 1 -> 2 -> 3 -> 1
    

    But going back, it will stop at first item

    1 <- 1 <- 2 <- 3
    

提交回复
热议问题