IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Récupérer la position d'un fragment au sein d'un slider


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut Récupérer la position d'un fragment au sein d'un slider
    Bonjour,

    Je me suis basé sur ce tuto pour permettre un slide entre mes view (un peu comme sur le google play) mais je ne comprend pas trop comment je pourrais récupérer la position (qui est retournée dans le MyPageAdapter) et l'utiliser au sein même du fragment.

    En fait pour faire court j'ai 3 vues qui se ressemblent toutes à 2 détails près, les données qu'elles affichent dans les listes sont différentes et le titre aussi.
    Donc j'aimerais slider 3 fois sur la même vue (le même fragment) mais que l'affichage change en fonction de ça.

    Merci d'avance pour vos réponses

    ps: j'ai suivi ces tutoriels Android : http://android.developpez.com/cours/

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    En fait pour faire court j'ai 3 vues qui se ressemblent toutes à 2 détails près, les données qu'elles affichent dans les listes sont différentes et le titre aussi.
    Donc j'aimerais slider 3 fois sur la même vue (le même fragment) mais que l'affichage change en fonction de ça.
    Utilise alors le même content dans tes trois Fragment différents et gère dynamiquement l'affichage sur les parties différentes sur l'inflater ou alors gère directement les widgets sur leurs visibilité (VISIBLE, INVISIBLE, GONE) en fonction du fragment qui a été appelé ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut
    On m'a proposé de récupérer dans le "main.java" la position du fragment avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mViewPager.getCurrentItem();
    Et on me dit d'utiliser les bundle pour récupérer la variable dans le fragment et faire les tests là.
    Mais je trouve pas grand chose là-dessus (précision ce n'est lancer une activité avec une variable, donc pas d'intend).

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Je comprends pas pourquoi tu te prends la tête à vouloir avoir une astuce depuis ton fragment en fonction des positions, niveau maintenance, ce n'est pas le top.

    Pourquoi ne pas tout simplement avoir une class Fragment de Base sur laquelle les trois appuierons ?

    Tu mets ton code générique dans la classe de base, et le code spécifique dans les classes spécifiques.

    Après tu attributs chaque fragment spécifique à une View.

    Si tu veux garder absolument qu'un seul fragment et le piloté a distance,alors depuis ton activité tu peux connaître la position active.

    De cette position active tu demande à ton adapter de te retourner le fragment correspondant. De ce fragment retourné tu peux interagir dessus.

    Du style

    De ton Activity:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int pos = mViewPager.getCurrentItem();
    Fragment frag = mPagerAdapter.GetItem(pos);
    frag.setValue(value);
    Par contre attention tu dois bien compléter la fonction getItem de ton adapter qui est une fonction virtuelle de la classe FragmentPagerAdapter.

    Donc depuis ton adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     @Override
            public Fragment getItem(int position) {
                return this.fragments.get(position);
            }
    Comme dans le tutorial.


    N'oublie de faire un Update quand tu auras modifié ta View, via la fonction notifyDataSetChanged
    http://developer.android.com/referen...tChanged%28%29

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut
    Oua

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut
    Ouais mais ces lignes je peux les taper seulement dans le fichier main qui s'occupe de lister les fragments et mettre en place l'adaptateur.
    mais si je veux récupérer cette valeur dans le code de mon fragment je dois bien passer la variable?

  7. #7
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    mais si je veux récupérer cette valeur dans le code de mon fragment je dois bien passer la variable?
    Tu dois le faire à partir de ton activity qui elle sera capable de connaître la position active.

    Pour savoir si l'utilisateur change de position il faut implémenter le listener
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mViewPager.setOnPageChangeListener
    http://developer.android.com/referen...ngeListener%29

    Via cette fonction du listener tu seras capable de connaître la nouvelle position de ta ViewPager.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onPageSelected (int position)
    http://developer.android.com/referen...ected%28int%29

    Ensuite de cette activity tu dois récupérer le fragment sélectionné pour le mettre à jour, comme expliqué ci dessus, à toi après de définir la variable que tu dois passer et les actions qu'elle entraîne sur le fragment (cela sera donc défini depuis ta classe Fragment).

Discussions similaires

  1. [Plugin] Récupérer la position du curseur
    Par Amon dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 12/02/2009, 10h38
  2. Récupérer la position dans un fragment sh.
    Par Bakura dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/11/2007, 17h23
  3. Comment récupérer la position des icones du bureau ?
    Par bambino3996 dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 29/09/2005, 18h38
  4. récupérer la position d'un enregistrement
    Par zenzo dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/07/2005, 14h13
  5. Récupérer la position d'un enregistrement
    Par Hell dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/09/2004, 19h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo