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

  1. #1
    Nouveau membre du Club
    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
    Points : 34
    Points
    34
    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 confirmé
    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 : 30
    Localisation : France, Hauts de Seine (Île de France)

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

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

    Tu peux nous montrer le XML de la listview ?

  3. #3
    Nouveau membre du Club
    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
    Points : 34
    Points
    34
    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
    Expert confirmé
    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
    Points : 4 166
    Points
    4 166
    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
    Nouveau membre du Club
    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
    Points : 34
    Points
    34
    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 confirmé
    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 : 30
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Juillet 2017
    Messages : 86
    Points : 615
    Points
    615
    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