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 :

Event click sur un CustomControl


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut Event click sur un CustomControl
    Bonjour,

    J'ai un problème pour le déclenchement d'un évènement clique sur un customControl.
    Pour vous expliquer :
    • J'ai une activity qui contient X customControl
    • et j'ai un customControl qui extend de LinearLayout


    Mon but est de pouvoir effectuer un évènement clique sur l’ensemble du customControl.
    rien de bien compliquer j'instancie un customControl et je défini son click puis je l'ajoute au LinearLayout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    EventSaisieUC eventSaisieUC = new EventSaisieUC(this, unEvtSaisie, metier);
    eventSaisieUC.setOnClickListener(this);
    llEvtSaisie.addView(eventSaisieUC);
    du coup je peut ensuite réceptionner mon CustomControl dans l'event click grace a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @Override
    public void onClick(View v) {
    	EventSaisieUC evt = (EventSaisieUC)v;	
    }
    Sauf que le problème est le suivant : lorsque je clique sur la zone blanche mon évènement clique ce déclenche.
    mais pas quand je clique sur les contrôles a l’intérieur du customControl.


    j'ai tester pas mal de choses, comme ajouter l’évènement clique aux contrôles du CC, mais je ne peut plus caster la vue en EventSaisieUC du coup.

    quelqu'un aurais une idée ? ou une autre solution ?

    Merci par avance.
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java / C++
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java / C++

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Bonjour Aurel_dev,

    Pour gérer le clique de chaque élément d'une vue, il faut préciser le listener pour chacun de ses éléments!! Je te mets un exemple, j'utiliser trois bouttons, et je gère le clique sur ses trois bouttons:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Ici, on récupère l'instance du boutton "btnContinue", afin de lui
    // définire le clique listener (qui ici est "this").
    ((View) findViewById(R.id.btnContinue)).setOnClickListener(this);
    ((View) findViewById(R.id.btnNewGame)).setOnClickListener(this);
    ((View) findViewById(R.id.btnParametre)).setOnClickListener(this);
    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
     
    // On va pouvoir gérer chacun des cliques, en les identifiant grâce à leurs id!
    public void onClick(View view) {
    		final int id = view.getId();
    		switch(id)
    		{
    			case R.id.btnContinue:
     
    			break;
     
    			case R.id.btnNewGame:
     
    			break;
     
    			case R.id.btnParametre:
     
    			break;
    		}
    	}
    C'est à mon goût le moyen le plus simple, et le plus propre, de gérer un ensemble de clique sur un ensemble d'éléments. J'espère que cela pourra t'aider !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut
    Effectivement j'ai bien pensé a cette solution j'avais fait ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    EventSaisieUC eventSaisieUC = new EventSaisieUC(this, unEvtSaisie, metier);
    eventSaisieUC.setOnClickListener(this);
    eventSaisieUC.getmonCheckBox().setOnClickListener(this);
    eventSaisieUC.getmonBouton().setOnClickListener(this);
    llEvtSaisie.addView(eventSaisieUC);
    chacun des clique fonctionne en effet, mais la vue que je récupère n'est pas du tout ce que je veut.
    par exemple quand je clique sur le customControl (dans la zone blanche), je peut caster la vue en CustomControl et ainsi accéder a mes méthodes.
    Par contre si je clique sur le bouton ou la checkbox, la vue récupérer est soit l'un ou l'autre, mais je peut pas caster en customControl donc plus d’accès a mes méthodes (celle du CC).
    (j'ai bien tester avec un v.getParent() mais ce n'est pas bon).

    je sait pas si j'ai été bien claire

    Merci en tout cas Minicalion pour ton aide.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Java / C++
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java / C++

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Si je comprends bien, tu souhaite avoir accès aux méthodes de ton custom control et ceux peut importe l'élément cliqué sur la vue?

    Si c'est le cas, il te suffit de garder une référence sur ton EventSaisieUC non?
    En plus, ça t'évite d'avoir à caster!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut
    Citation Envoyé par Minicalion Voir le message
    Si je comprends bien, tu souhaite avoir accès aux méthodes de ton custom control et ceux peut importe l'élément cliqué sur la vue?!
    voila exactement !
    Par contre il peut y avoir X custom control donc je ne sait pas lequel sera sélectionner.

    ET c'est au moment de la sélection que je souhaite garder sa référence

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur Java / C++
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java / C++

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Re,

    Je pense que l'idée que tu as eu d'utiliser View.getParent() pour accéder à ton custom control est la bonne solution. Je suis parvenue à récupérer mon RelativeLayout en partant d'un boutton de ma vue en utilisant cette méthode.

    Cependant, à mon avis pour que cela fonctionne, il faut que ton custom control puisse contenir des vues enfants, comme peuvent le faire les Layouts. Et pour y arriver, il te faudra surement hériter de ViewGroup, qui est la classe "mère" des layouts.

    Voilà une piste à explorer, et si comme ça on ne peut pas y arriver, alors je ne sais pas comment faire .

Discussions similaires

  1. [Flex3] Event click sur un swfLoader avec link
    Par C_C dans le forum MXML
    Réponses: 0
    Dernier message: 13/07/2010, 18h21
  2. Paramètre sur event Click
    Par tafkap dans le forum Flex
    Réponses: 6
    Dernier message: 11/02/2010, 19h54
  3. Event click sur une surface
    Par bakman dans le forum SDL
    Réponses: 7
    Dernier message: 16/12/2009, 21h43
  4. Réponses: 3
    Dernier message: 05/03/2008, 09h35
  5. Event Click droit sur ComboBox
    Par AF_STjohn dans le forum C++Builder
    Réponses: 8
    Dernier message: 29/04/2005, 11h48

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