81 votes

ListView avec OnItemClickListener android

J'utilise un ListView personnalisé avec RatingBar et ImageButton. Voici mon problème: lorsque je clique sur mon ListView, mon OnItemClickListener ne fonctionne pas. S'il vous plaît, quelqu'un peut-il m'aider? Code:

 ListView lv = getListView();
setContentView(lv);
lv.setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
        Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
    }
});
 

Merci d'avance!

127voto

Shaista Naaz Points 1934

Bien que ce soit une très vieille question, mais je poste toujours une réponse afin que cela puisse aider quelqu'un. Si vous utilisez une mise en page dans la vue liste, utilisez ...

 android:descendantFocusability="blocksDescendants"    
 

... sur le premier modèle parent de la liste. Cela fonctionne comme par magie, le clic ne sera utilisé par aucun élément de la liste, mais ira directement à l'élément de la liste.

18voto

Grv9098 Points 105

Salut ça marche, ça marche pour moi ... j'espère que ça marche aussi pour toi

Si l'élément de la liste contient ImageButton

Problème: OnItemClickListener ne répond simplement pas du tout!

Raison: aucune idée

Solution: dans le code, définissez ImageButton foyer d » à "false"

1: ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);

2: button.setFocusable(false);

13voto

Rahul Tiwari Points 71

Si vous souhaitez activer l'élément, cliquez sur dans l'affichage de la liste

 listitem.setClickable(false);
 

cela peut sembler faux au premier abord mais ça marche!

11voto

Ganesh Points 1544

si la vue d'élément de la liste contient un bouton, une case à cocher ou une imageBase, onitemclicklistener et onitemlongclicklistener ne fonctionnent pas car ils possèdent leur propre écouteur onclick.

mis au point comme faux

 holder.button.setFocusable(false);
 

9voto

Marek Sebera Points 15987

1) Vérifiez si vous utilisez OnItemClickListener ou OnClickListener (ce qui n'est pas pris en charge pour la Liste)
La Documentation Développeurs Android ListView

2) Vérifiez si vous avez ajouté de l'Écouteur à votre ListView correctement. Il est accroché sur la ListView pas sur ListAdapter!

ListView.setOnItemClickListener(listener);

3) Si vous avez besoin d'utiliser OnClickListener, vérifiez si vous n'utilisez DialogInterface.OnClickListener ou View.OnClickListener (ils peuvent facilement être échangés si non validé ou si vous utilisez les deux d'entre eux)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X