J'ai un ListView
où chaque élément de la liste contient un TextView et deux Boutons différents. Quelque chose comme ceci :
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Avec ce code, je peux créer un OnItemClickListener
pour l'ensemble de l'article :
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
Cependant, je ne veux pas que l'ensemble de l'élément soit cliquable, mais seulement les deux boutons de chaque élément de liste.
Ma question est donc la suivante : comment puis-je mettre en œuvre un onClickListener pour ces deux boutons avec les paramètres suivants :
-
int button
(quel bouton de l'élément a été cliqué) -
int position
(qui est l'élément de la liste sur lequel le clic du bouton s'est produit)
Mise à jour : J'ai trouvé une solution comme décrite dans ma réponse ci-dessous. Maintenant, je peux cliquer/taper sur le bouton via l'écran tactile. Cependant, je ne peux pas le sélectionner manuellement avec la boule de commande. Il sélectionne toujours l'élément entier de la liste et de là passe directement à l'élément suivant de la liste en ignorant les boutons, même si j'ai réglé la fonction .setFocusable(true)
y setClickable(true)
pour les boutons dans getView()
.
J'ai également ajouté ce code à mon adaptateur de liste personnalisé :
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
Cela fait qu'aucun élément de la liste n'est plus sélectionnable du tout. Mais cela n'a pas aidé à rendre les boutons imbriqués sélectionnables.
Quelqu'un a une idée ?