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 :

Question basique sur la programmation objet : les variables globales


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2020
    Messages : 17
    Points : 19
    Points
    19
    Par défaut Question basique sur la programmation objet : les variables globales
    Bonjour à tous,

    Je suis débutant en kotlin. Je travaille actuellement à récupérer la position d'un item au clic sur un recyclerview.

    Cette position, dans la fonction onclick, j'arrive à l'obtenir avec la fonction layoutposition.

    Mais impossible de récupérer cette valeur ailleurs dans le code pour l'exploiter.

    N'y a-t-il que des variables locales en java / kotlin ?

    je ne comprends pas du tout comment on programme du coup...

    Merci par avance.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Je te fait une réponse en java mais la problématique est la même.
    Si tu veux pouvoir utiliser la valeur récupérée en dehors de ta fonction il faut l'assigner à une autre variable qui elle aura la portée nécessaire.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Override
    public void onClick(final View view) {
        mPosition = mRecyclerView.getChildLayoutPosition(view); // mPosition étant (par exemple) un membre de ta classe
     
    }
    Tu devras en revanche gérer le cas ou onClick n'aurai pas été appelé avant d'utiliser la variable.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2020
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Bonjour

    Je te remercie,

    Voici en fait ce que je viens d'essayer de faire, sans succès :
    Voici ma classe view holder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
      class ViewHolder(view: View) : RecyclerView.ViewHolder(view), View.OnClickListener {
            val textView: TextView
            val edit: EditText = view.findViewById(R.id.edit)
            var mPos:Int = 0
            override fun onClick(view: View) {
                Toast.makeText(
                    view.getContext(),
                    "position : " + layoutPosition + " text : " ,
                    Toast.LENGTH_SHORT
                ).show()
                mPos=layoutPosition
     
            }
     
            init {
                view.setOnClickListener(this)
                textView = view.findViewById(R.id.textview)
     
     
                //textView.text= getLayoutPosition().toString()
            }

    ensuite, dans main activity, j'essaie de faire CustomAdapter.ViewHolder.mPos mais cela n'existe pas...

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Tu ne peux pas accéder directement au ViewHolder comme ca.

    Le RecyclerView instancie ta classe ViewHolder pour chaque élément visible de la liste. Donc quand tu veux faire CustomAdapter.ViewHolder.mPos c'est juste pas possible.
    Si tu veux pouvoir récupérer la position dans ton activity il faut la sauvegarder éventuellement au niveau de ton model où gérer l'événement directement au niveau de l'activity. Un exemple ici.

    Ceci étant dit les RecyclerView sont très (trop?) compliqué quand on veux juste faire une simple liste. Je te conseil vivement de commencer par une ListView qui est bien plus simple pour les actions de bases.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2020
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Bonjour

    Je te remercie pour ton aide. J'ai réussi à implémenter le listener. Il me reste à comprendre le code (il y a du travail ! )

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question basique sur les variables globales
    Par julien terrier dans le forum C
    Réponses: 8
    Dernier message: 08/01/2016, 11h54
  2. question sur les variables globales
    Par acik59 dans le forum C
    Réponses: 8
    Dernier message: 15/05/2007, 13h33
  3. Question basique sur les tableaux
    Par valanagrid dans le forum C++
    Réponses: 8
    Dernier message: 08/11/2006, 15h47
  4. Questions sur la programmation objet en Delphi
    Par Manopower dans le forum Débuter
    Réponses: 20
    Dernier message: 15/06/2005, 15h39
  5. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59

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