Aller au contenu

Action dans un viewPager


blubsy

Recommended Posts

Bonjour,
voilà j'ai un soucis dans la mise en place d'un viewPager.
 
Je m'explique, j'ai un fichier AbstractFragment ou je crait un viewpager :
mSliderAdapter = new SliderAdapterNewsDetails(MyApp.APP_CONTEXT);
mViewPager = (ViewPager) view.findViewById(R.id.pager);
mViewPager.setAdapter(mSliderAdapter);
 
Là, pas de pb.
J'ai donc aussi un fichier SliderAdapterNewsDetails extends PageAdapter
Dans celui ci je modifis mes données sans pb et j'ai aussi trouvé comment faire un clique sur un button.
 
Maintenant j'aimerais lancer une action lorsque la page apparaît à l'écran et non lorsqu'elle est chargé :
Lorsqu'on arrive sur la page une image de la vue doit disparaître au bout de X seconde.
Mon pb c'est qu'actuellement lorsque je met en place une action celle ci est activer sur la page visible mais aussi sur les pages charger et non visible.
 
Comment je peux faire pour rendre l'action active uniquement sur la vue visible ?
 
Merci par avance pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

bon je ne m'en sort pas...

 

Je m'explique plus en détails :

 

J'ai une AbstractFragment :

public class FragmentNews extends AbstractFragment implements View.OnTouchListener, Animation.AnimationListener {

 

Avec dedans la création d'un ViewPager :

        mSliderAdapter = new SliderAdapterNewsDetails(MyApp.APP_CONTEXT);
        mViewPager = (ViewPager) mView.findViewById(R.id.pager);
        mViewPager.setAdapter(mSliderAdapter);
 

Mon SliderAdapterNewsDetails est un PagerAdapter

public class SliderAdapterNewsDetails extends PagerAdapter implements Animation.AnimationListener {

 

Je peux dans mon PagerAdapter  modifier mes élements sans problème :

TextView titleTextView = (TextView) view.findViewById(R.id.news_title);

titleTextView.setText("mon texte");
 
Mais voilà lorsque je veux mettre une action spécifique dans la page visible et là je suis perdu.
Petit explication :
Je veux lancer une action au bout de x seconde lorsque la page s'affiche.
Si je met cette action dans le pageAdapter, cette action ce produit dans la page visible mais aussi dans la page charger (et non visible).
Comment je peux lui indiquer de ne faire l'action que lorsque la page est visible (à l'écran).
 
MERCI par avance pour votre aide.
 
Blubsy
Lien vers le commentaire
Partager sur d’autres sites

Salut, 

 

avec si peu de code, difficile de bien voir les interactions entre les composants. 

 

Dans le ViewPager (mViewPager), tu peux savoir si la page change avec ce code (non testé):

mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
    
    // This method will be invoked when a new page becomes selected.
    @[member=override]
    public void onPageSelected(int position) {
        Toast.makeText(HomeActivity.this,
"Selected page position: " + position, Toast.LENGTH_SHORT).show();
    }
    
    // This method will be invoked when the current page is scrolled
    @[member=override]
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        // Code goes here
    }
    
    // Called when the scroll state changes: 
    // SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING
    @[member=override]
    public void onPageScrollStateChanged(int state) {
        // Code goes here
    }
});

Il faut remplacer "HomeActivity" par le nom de classe de ton activity. 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

bon j'ai avancé dans mon schmilblik (merci Studio OPZO).

Désormais avec public void onPageSelected(int position)  dans le fichier AbstractFragment j'obtiens le numéro de la page active.

Je renvois cette donnée à ma page PagerAdapter et je peux ou non déclencher mon action.

Maintenant mon problème c'est de déclencher l'action lorsqu'on change de page.

Je m'explique :

L'action que je lance sur un élément de ma page est activer lorsque la vue est charger.

Hors dans un viewpager la vue principal est charger mais aussi les vue suivante (ou précédente).

Je voudrais lancer une action (que je fait actuellement dans mon PagerAdapter) uniquement sur la vue visible.

 

J'espère avoir été assé clair dans mes explications et vous remerci pour votre aide.

 

blubsy

Lien vers le commentaire
Partager sur d’autres sites

Oui c'est ça.

J'ai donc bien l'affichage du numéro de la page visible est c'est sur cette vue que je voudrais mettre en place l'action comme par exemple :

layone.setVisibility(View.GONE);

 

Ce que j'ai du mal à faire (et à comprendre) c'est comment récupérer l'élément d'une vue alors qu'on est dans le AbstractFragment et que la vue à été géré dans le PagerAdapter.

Lien vers le commentaire
Partager sur d’autres sites

Là, il faut regarder le (les) fichiers XML de layout pour voir comment s'imbriquent les éléments. Et ajouter des "getters" pour accéder aux éléments dont tu as besoin. (si tu passes tes variables en public, je viens te chercher pour te coller un coup de pied au c*l  :angry:  :P )

Lien vers le commentaire
Partager sur d’autres sites

MDR mais non mais non pas en public (.............AAAAAAAAAAAAAAAAAAAAAAAA.............).

Bon je vais regarder tous ça cette après midi.

J'ai vraiment envie de progresser mais je galère pour comprendre comment tous s'imbrique...

 

MERCI BEAUCOUP POUR TOUTE TON AIDE.

 

blubsy


Rien à voir :

je viens de voir ton site et j'adore, ce soir je montre ça à ma fille (5 ans), elle va adorer...

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...