J'ai un ListView
où chaque élément de la liste contient un TextView et deux boutons différents. Quelque chose comme ça:
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'élément entier:
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'élément entier soit cliquable, mais uniquement les deux boutons de chaque élément de liste.
Ma question est donc de savoir comment implémenter un onClickListener pour ces deux boutons avec les paramètres suivants:
int button
(sur quel bouton de l'élément a été cliqué)int position
(qui est l'élément de la liste sur lequel le clic sur le bouton s'est produit)
Mise à jour: j'ai trouvé une solution comme décrit dans ma réponse ci-dessous. Maintenant, je peux cliquer / appuyer sur le bouton via l'écran tactile. Cependant, je ne peux pas le sélectionner manuellement avec le trackball. Il sélectionne toujours l'élément de liste entier et à partir de là, il passe directement à l'élément de liste suivant en ignorant les boutons, même si j'ai défini .setFocusable(true)
et 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 liste ne peut plus être sélectionné. Mais cela n'a pas aidé à rendre les boutons imbriqués sélectionnables.
Quelqu'un a une idée?