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éception évènement OnClick aléatoire


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Points : 33
    Points
    33
    Par défaut Réception évènement OnClick aléatoire
    Bonjour,

    J'ai un adapter perso pour une ListView.
    Chaque ligne de ma ListView gère deux TextView.

    Lorsque je déclare un OnClickListener dans mon adapter, je ne reçois pas toujours l'évènement dans mon activity.
    Si je ne les déclare pas, tout fonctionne correctement.
    Malheureusement j'ai besoin de les déclarer pour savoir quel item a été cliqué.

    Voici la méthode dans l'activity:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    protected void onListItemClick(ListView l, View v, int position, long id) {
     
        	Log.e("Click receive", "Click receive");
            super.onListItemClick(l, v, position, id);	
     
    	}
    et la méthode getView:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    public View getView(int p_position, View convertView, ViewGroup parent) {
                   View v = convertView;
                     if (v == null) {
                       LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                       v = vi.inflate(id, null);
                   }
                   final Bean b = items.get(p_position);
                   if (b != null) {
                           TextView t1 = (TextView) v.findViewById(R.id.TextBeanView01);
                           ImageView p1 = (ImageView) v.findViewById(R.acountcreation.PictView01);
     
                           if(t1!=null)
                           {
                           	t1.setText(b.getName());
                           	t1.setFocusable(false);
                           	t1.setFocusableInTouchMode(false);
     
                           	t1.setOnClickListener(new OnClickListener() {
     
                      			public void onClick(View v) {
                      				Log.e("CLICK", "CLICK ON T1 " + b.getName());
                      				b.setType(0);
                      			}
                      		});
                           }
     
                           if(p1!=null)
                           {
                           	p1.setOnClickListener(new OnClickListener() {
     
                      			public void onClick(View v) {
                      				Log.e("CLICK", "CLICK ON Picture " + b.getName());
                      				b.setType(1);
                      			}
                      		});
                           }
     
     
                   }
                   return v;
           }
    Le xml:

    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
    23
    24
    25
    26
    27
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_height="wrap_content" android:orientation="horizontal" android:layout_width="fill_parent"
      android:descendantFocusability="afterDescendants">
     
    	<TextView android:text="@+id/TextView01" 
    	    android:id="@+id/TextBeanView01" 
    	    android:layout_width="wrap_content" 
    	    android:layout_height="wrap_content" 
    	    android:singleLine="true" 
    	    android:textStyle="bold" 
    	    android:layout_marginTop="5dip" 
    	    android:layout_marginLeft="5dip"
    	    android:descendantFocusability="afterDescendants">
     
    	</TextView>
     
    	<ImageView 
    	    android:layout_width="fill_parent" 
    	    android:id="@+acountcreation/PictView01"
    		android:layout_height="wrap_content"
    		android:descendantFocusability="afterDescendants"
    		android:src="@drawable/ajouter" android:layout_marginTop="10dp">
    	</ImageView>
    </LinearLayout>
    Un exemple de séquence:

    - CLICK ON T1.
    - CLICK ON T1.
    - CLICK ON T1.
    - Click receive.

    De temps en temps ça marche bien.

    Quelqu'un pourrait m'aider?

    Merci beaucoup.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Je corrige ce que j'ai dis:

    Lorsque je recois l'évènement click dans mon adapter, je ne le reçois pas dans mon Activity et inversement.

    J'ai du mal à comprendre le fonctionnement...

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Pour les ListView, c'est plutôt un OnItemClickListener qu'il faut utiliser.
    Il se met sur la ListView, et c'est lui qui gère ce que fait le clic sur l'objet de la liste.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Jai essayé avec le OnItemClickListener.

    J'ai exactement le même comportement.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Points : 33
    Points
    33
    Par défaut
    Peut être que ma méthode n'est pas la bonne.

    Il y a il un autre moyen dans le OnItemClickListener pour connaitre quel item d'une ligne a été clické?

    Merci.

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Si je comprends bien :
    Les lignes de la liste sont composées d'un texte et d'une image. Tu veux savoir si c'est l'image ou le texte qui a été cliqué, c'est bien ça ?

    Là, le seul moyen que je vois de faire ça, c'est vérifier si le clic est compris dans la zone de l'image, via les coordonnées du clic, mais ça me semble un peu ... casse-gueule :/
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

Discussions similaires

  1. Pb Création évènement OnClick
    Par BigMike dans le forum C++Builder
    Réponses: 10
    Dernier message: 26/06/2006, 15h47
  2. événement onclick intempestif d'1 TMenuItem
    Par OutOfRange dans le forum Delphi
    Réponses: 6
    Dernier message: 22/06/2006, 20h46
  3. Changement dynamique de l'évènement OnClick
    Par cluis dans le forum Access
    Réponses: 3
    Dernier message: 22/03/2006, 11h30
  4. Erreur avec l'évènement OnClick de ListView
    Par xenos dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/03/2006, 14h54
  5. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52

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