Jump to content
Sign in to follow this  
blubsy

Action dans un viewPager

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.

Share this post


Link to post
Share on other sites

Toujours les mêmes qui aide, vraiment merci beaucoup.

Bon je testerais ça demain matin merci.

 

Blubsy

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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. 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

La vue visible c'est celle dont le numéro est donné par le onPageSelected, non? 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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 )

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  





×
×
  • Create New...