J'ai un ListView
où chaque élément de la liste contient un TextView et deux boutons différents. Quelque chose comme ceci:Android: éléments ListView avec plusieurs boutons cliquables
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Avec ce code, je peux créer un OnItemClickListener
pour tout 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 tout l'article à cliquable, mais seulement les deux boutons de chaque élément de la liste.
Donc ma question est, comment puis-je mettre un onClickListener pour ces deux boutons avec les paramètres suivants:
int button
(qui touche de l'élément a été cliqué)int position
(qui est l'élément dans la liste sur laquelle le bouton clic passé)
Mise à jour: J'ai trouvé une solution telle que décrite dans ma réponse ci-dessous. Maintenant, je peux cliquer/toucher 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 la liste entière et à partir de là va directement à l'élément de la liste suivante en ignorant les boutons, même si j'ai réglé .setFocusable(true)
et setClickable(true)
pour les boutons dans getView()
.
J'ai aussi ajouté ce code à mon adaptateur liste personnalisée:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
Ceci fait qu'aucun élément de la liste peut être sélectionnée plus du tout. Mais cela n'a pas aidé à rendre les boutons imbriqués sélectionnables.
Quelqu'un a une idée?
Sont-ils encore nécessaires? –
Si vous regardez le code BaseAdapter, vous verrez que areAllItemsEnabled() et isEnabled() sont juste codés en dur à true, ce qui en fait des espaces réservés simples sans aucune logique. –
Et si je veux utiliser un SimpleCursorAdapter? Dois-je faire un adaptateur personnalisé étend simplecursoradapter? – oratis