web-dev-qa-db-fra.com

Click ne fonctionne pas sur Listitem Listview android

J'ai implémenté Android listview avec ListActivity. Ici, le problème est que, lorsque je clique sur l'élément de la liste, aucune action n'est effectuée lorsque la couleur du flash n'apparaît pas, à savoir la couleur orange. Alors, avez-vous une idée de cette réponse aimable à ma question? 

@Override
protected void onListItemClick(ListView l, View v, int position, long id) 
{
    super.onListItemClick(l, v, position, id);
    Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT)
            .show();

}

Je mets également ce code dans Main ListActivity.

31
Rajesh Rajaram

La première chose que vous devez noter ici est que, chaque fois que des éléments Clickable tels que Boutons ou ImageButtons sont présents dans votre élément ListView, ils prennent le contrôle des événements de clic. Et pour que votre ListView ne puisse pas accepter l'événement click. 

Ce que vous devez simplement faire est de définir l'attribut focusable sur false pour les Button ou ImageButton que vous avez dans votre liste. Mais ils fonctionneront quand même sans problème et votre onListItemClick de ListView fonctionnera également. 

Essaye ça, 

        <Button  Android:id="@+id/textsize_increaser"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_toRightOf="@+id/back_button"
        Android:focusable="false"
        Android:text=" A + "/>

Ici, j'ai ajouté ce Android:focusable="false" et cela fonctionne bien. l'essayer.

113
Andro Selva

Avez-vous défini le mode de choix de ListView sur SINGLE:

     listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

Et si vous avez une image ou une textview ou un bouton cliquable dans l'élément de la liste, désactivez-les (dans votre classe d'adaptateur):

        yourButton.setFocusable(false);
        yourButton.setFocusableInTouchMode(false);
9
Yogesh Somani

Utilisez-vous un adaptateur personnalisé? et gonfler la disposition avec le bouton ou toute vue qui ronge le focus de la vue liste comme un enfant, cela ne fonctionnera évidemment pas. assurez-vous de définir 

    Android:focusable="false"

à une telle vue en fichier xml. J'espère que cela fonctionne pour toi.

4
vinaykumar

Définissez ceci dans votre fichier Java de listactivity

listview1.setFocusable(false);
4
Mehul

Eclipse m'a suggéré d'ajouter textIsSelectable="true" à mes TextViews dans le XML de mise en page utilisé pour l'affichage en liste.

Eh bien, si vous souhaitez cliquer sur les éléments de la liste, vous ne devez pas ajouter ces balises.

1
Mika

se référer à ce post pour une solution:

Click ne fonctionne pas sur Listitem Listview Android

View v = parent.getChildAt(position);
parent.requestChildFocus(v,view);
v.setBackground(res.getDrawable(R.drawable."Some drawable for clicked row"));

int count = parent.getChildCount();
for(int i=0; i<count; i++)
{
   if(i!=position)
   {
     v = parent.getChildAt(i);
     v.setBackground(res.getDrawable(R.drawable."some drawable for not clicked row));
   }
}
0
Wes

En fait, il existe un paramètre destiné à empêcher le focus des vues enfants, ajoutez simplement ce qui suit dans la présentation parent:

Android:descendantFocusability="blocksDescendants"

Comme l'explique la documentation:

Le ViewGroup empêchera ses descendants de recevoir le focus.

0
Yoann Hercouet
listview.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int pos,
                    long id) {
                Toast.makeText(v.getContext(), exm.get(pos).getDefinition(),
                        Toast.LENGTH_SHORT).show();


            }
        });
0
Rons Jackos
listItemButton.setFocusable(false);
listItemButton.setFocusableInTouchMode(false);

Définissez ce qui précède dans votre adaptateur . Ce n'est pas workiXMLinXML

0
Arun Robinson

assurez-vous que vous êtes 

  1. Ne pas utiliser l'affichage défilement avec l'affichage liste
  2. N'utilisez pas la vue Défilement dans la présentation de votre élément de ligne pour la vue Liste

Si la vue de défilement est présente à l’un des endroits ci-dessus, supprimez-le.

0
Dhaval Jotaniya