Itoun
Itoun

Reputation: 3226

How to differentiate 2 viewPager in onPageSelected

my problem is pretty simple but I don't see how to solve it... I didn't find any response to this problem.

I have 2 viewPager and when a page is selected I want to know which viewPager it comes from in onPageSelected().

There is my code :

public class MainActivity {

    private ViewPager mCardsPager;
    private ViewPager mIpsPager;
    private MyCreditCardsPagerAdapter mCardsAdapter;
    private MyInstantPaiementPagerAdapter mIpsAdapter;
    private List<PayMethod> mCards;
    private List<PayMethod> mIps;

    //fill Pager/Adapter/List

    @Override
    public void onPageSelected(int position) {
        if () {//If the page comes from mCardsPager
            //do Something with mCards
        } else { //else the page comes from mIpsPager
            //do Something with mIps
        }
    }

}

Upvotes: 1

Views: 66

Answers (2)

Rajen Raiyarela
Rajen Raiyarela

Reputation: 5636

Setting same OnPageChangeListener for multiple ViewPager will not work. You need to create a class which implements OnPageChangeListener. In this class add a constructor which takes ViewPager as an input parameter and hold the value in a data member. Finally, use this class for adding OnPageChangeListener

Upvotes: 2

Milind Mevada
Milind Mevada

Reputation: 3285

You can set different listeners for each ViewPager rather than implement on Activity class. Like this

mCardsPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {

            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });

AND

mIpsPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int i, float v, int i1) {

                }

                @Override
                public void onPageSelected(int i) {

                }

                @Override
                public void onPageScrollStateChanged(int i) {

                }
            });

Upvotes: 3

Related Questions