83 votes

Comment obtenir le numéro de page actuel d'un ViewPager pour Android?

Je veux connaître la position actuelle de la page ViewPager . Je crée un adaptateur et le règle sur ViewPager . Maintenant, je veux connaître le numéro de la page ou la position actuelle de la vue actuelle, car je veux créer des événements supplémentaires sur cette page.

J'ai utilisé viewPager.setCurrentItem(1); pour définir le premier élément.

Existe-t-il une méthode similaire pour obtenir la page actuelle?

172voto

Yashwanth Kumar Points 12122

dans les derniers packages, vous pouvez également utiliser

 vp.getCurrentItem()
 

ou

vp est le viewPager,

 pageListener = new PageListener();
vp.setOnPageChangeListener(pageListener);
 

vous devez mettre un écouteur de changement de page pour votre viewPager. Il n'y a pas de méthode sur viewPager pour obtenir la page actuelle.

 private int currentPage;

    private static class PageListener extends SimpleOnPageChangeListener{
            public void onPageSelected(int position) {
                Log.i(TAG, "page selected " + position);
                   currentPage = position;
        }
    }
 

47voto

chrish Points 1165

Il existe une méthode object_of_ViewPager.getCurrentItem() qui renvoie la position de la page de visualisation visualisée

17voto

dev_android Points 450

Si vous ne voulez que le poste, vp.getCurrentItem () vous le donnera, inutile d’appliquer onPageChangeListener () uniquement à cette fin.

7voto

Naveen Kumar Points 731

Pour résoudre ce problème Onpagechange auditeur est la meilleure, Mais elle aura également une petite erreur c'est qu'il ne détecte pas le temps de démarrage temps de 0e position une Fois que vous changer de page il commence à détecter la Page sélectionnée à la position de...Pour ce problème, je mouillage la solution la plus simple

1.Vous devez maintenir la position sélectionnée de la valeur de l'utiliser ensuite....
2. Cas 1: Au départ de la position est toujours à Zéro....
Cas 2: Supposons que si vous définissez l'élément actuel signifie que vous définissez cette valeur en maintenir la position
3.Ensuite, faites votre action avec l'utilisation de la maintenir dans votre activité...

Public int maintain=0;
myViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i2) {
             //Toast.makeText(MyActivity.this, i+"  Is Selected  "+data.size(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onPageSelected( int i) {
          // here you will get the position of selected page
            maintain = i;


        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });


updateButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Toast.makeText(MyActivity.this, i+"  Is Selected  "+data.size(), Toast.LENGTH_SHORT).show();
            data.set(maintain, "Replaced "+maintain);         
            myViewPager.getAdapter().notifyDataSetChanged();
        }
    });

6voto

Da-monk Points 15

getCurrentItem() , ne donne pas réellement la bonne position pour la première et la dernière page que j'ai corrigées en ajoutant ce code:

 public void CalcPostion() {    
    current = viewPager.getCurrentItem();

    if ((last == current) && (current != 1) && (current != 0)) {
        current = current + 1;
        viewPager.setCurrentItem(current);
    }
    if ((last == 1) && (current == 1)) {
        last = 0;
        current = 0;
    }
    display();
    last = current;
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X