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

Composants graphiques Android Discussion :

ListView: clic non détecté


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut ListView: clic non détecté
    Bonjour,

    J'ai une liste de boutons et j'aimerais les rendre cliquables (simple clic et long clic).
    Pour le long clic, ca fonctionne, il est détecté et j'arrive à récupérer le nom du bouton.
    Par contre, pour le simple clic, il n'est pas détecté et je ne trouve pas de solution:

    MainActivity:
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    public class MainActivity extends AppCompatActivity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            Button addPlace = (Button) findViewById(R.id.addPlace);
            Button noAddPlace = (Button) findViewById(R.id.noAddPlace);
            DatabaseHandler db = new DatabaseHandler(this);
     
            // List places
            List<Place> places = db.getAllPlaces();
            final ArrayList<Place> placeList = new ArrayList<Place>();
     
            initList(placeList, places);
            final PlaceAdapter adapter = new PlaceAdapter(this, R.layout.place_list, placeList);
            final ListView list = (ListView) findViewById(R.id.placesList);
            list.setAdapter(adapter);
            list.setDivider(null);
     
            // Click list places
            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Place selectedItem = (Place) parent.getItemAtPosition(position);
                    Log.d("test2", selectedItem.getName());
                }
            });
     
            // Long click list places
            list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                    Place selectedItem = (Place) parent.getItemAtPosition(position);
                    Log.d("test", selectedItem.getName());
                    return false;
                }
            });
     
            // Btn Add place
            addPlace.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    goToAddPlaceActivity();
                }
            });
     
            //Btn sélection
            noAddPlace.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    goToSelectionActivity();
                }
            });
        }
     
        private void goToAddPlaceActivity() {
            Intent intent = new Intent(MainActivity.this, AddPlaceActivity.class);
            startActivity(intent);
     
        }
     
        private void goToSelectionActivity() {
            Intent intent = new Intent(MainActivity.this, SelectionActivity.class);
            startActivity(intent);
     
        }
     
        private void goToSelectionParamsActivity() {
            Intent intent = new Intent(MainActivity.this, SelectionActivity.class);
            startActivity(intent);
     
        }
     
     
        private void initList(ArrayList<Place> placeList, List<Place> places) {
     
            for (Place place : places) {
                placeList.add(place);
            }
        }
    }
    Quelqu'un peut-il m'aider?

  2. #2
    Membre expérimenté
    Avatar de BeeApps
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2017
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 86
    Par défaut
    Salut,

    Tu peux nous montrer le XML de la listview ?

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut
    Oui bien sûr:
    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
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
     
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/btnPlace"
            android:background="@color/secondary"
            android:textColor="@android:color/white"
            android:layout_marginTop="@dimen/default_margin"
            android:longClickable="true"/>
     
    </LinearLayout>

    Et le activity_main.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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.skriwell.matournee.MainActivity"
        android:layout_margin="@dimen/default_margin">
     
        <ListView
            android:id="@+id/placesList"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
     
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/addPlace"
            android:text="@string/btn_home_add_place"
            android:background="@color/secondary"
            android:textColor="@android:color/white"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/placesList"
            android:layout_marginTop="@dimen/default_margin"/>
     
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/noAddPlace"
            android:text="@string/btn_no_add_place"
            android:background="@color/secondary"
            android:textColor="@android:color/white"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/addPlace"
            android:layout_marginTop="@dimen/default_margin"/>
     
    </android.support.constraint.ConstraintLayout>

  4. #4
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    C'est parce que ces 2 évènements entrent en collision, et le "onItemLongClick" gagne à chaque fois. Termines onItemLongClick par return true; pour régler le problème.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut
    Ca ne résous pas le problème, le clic n'est pas détecté.
    Même si je mets le long clic (setOnItemLongClickListener) en commentaire, le simple clic ne fonctionne pas

  6. #6
    Membre expérimenté
    Avatar de BeeApps
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2017
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 86
    Par défaut
    Si j'ai bien compris ta méthode "onItemClick" n'est jamais appelé. Peut-être tu dois regarder du côté de ton adapter. Je ne sais pas si ça a une importance, mais avec ce code ça fonctionne chez moi (et en ayant le même xml que toi) :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    public class MainActivity extends AppCompatActivity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            Button addPlace = (Button) findViewById(R.id.addPlace);
            Button noAddPlace = (Button) findViewById(R.id.noAddPlace);
     
            ArrayList<String> listItems=new ArrayList<String>();
            listItems.add("number 1");
            listItems.add("number 2");
     
            //initList(placeList, places);
            //final PlaceAdapter adapter = new PlaceAdapter(this, R.layout.place_list, placeList);
            final ListView list = (ListView) findViewById(R.id.placesList);
            ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1,
                    listItems);
            list.setAdapter(adapter);
            list.setDivider(null);
     
            // Click list places
            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    //Place selectedItem = (Place) parent.getItemAtPosition(position);
                    Log.d("test clic", "OK");
                }
            });
     
            // Long click list places
            list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                    //Place selectedItem = (Place) parent.getItemAtPosition(position);
                    Log.d("test long clic", "OK");
                    return false;
                }
            });
     
            // Btn Add place
            addPlace.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //goToAddPlaceActivity();
                }
            });
     
            //Btn sélection
            noAddPlace.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //goToSelectionActivity();
                }
            });
        }
    }

Discussions similaires

  1. Evenement de clic non détecté sur un JButton dans un JTree
    Par ForgetTheNorm dans le forum Composants
    Réponses: 4
    Dernier message: 23/01/2010, 06h20
  2. [debutant]Clic non détecté ?
    Par LestoK dans le forum ASP.NET
    Réponses: 5
    Dernier message: 25/06/2008, 09h35
  3. [C#2.0] Keys.XXX non détecté , pourquoi ?
    Par chnew dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/04/2006, 09h47
  4. Carte réseau non détectée sous Win XP
    Par maddog2032 dans le forum Hardware
    Réponses: 10
    Dernier message: 20/10/2005, 11h54
  5. [JMF] webcam non détectée
    Par Goldocrack dans le forum Multimédia
    Réponses: 3
    Dernier message: 17/07/2005, 00h31

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