English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans le processus de développement ordinaire, notre ListView peut ne pas être simplement affichée du texte ou des boutons, mais plutôt des layouts complexes. Dans ce cas, nous devons écrire nous-mêmes les layouts et les adapters personnalisés, généralement en héritant de BaseAdapter, voir l'exemple de code ci-dessous. Lorsque vous écrivez l'événement de clic sur ListView, la méthode onItemClick de OnItemClickListener n'est pas exécutée, ce qui rend l'événement de clic sur l'élément de ListView inopérant. L'événement de clic sur la vue de l'élément peut être traité dans la méthode getView. La raison principale pour laquelle l'élément entier ne répond pas au clic est que les sous-composants tels que l'ImageButton, le Button, le CheckBox (ou les sous-composants de la classe Button ou Checkable) que vous avez définis vous-même existent dans l'élément. À ce moment-là, ces sous-composants obtiennent le focus, donc souvent, lorsque vous cliquez sur l'élément, ce qui change est le sous-composant, et le clic de l'élément lui-même n'a pas de réponse.
Dans ce cas, vous pouvez utiliser descendantFocusability pour le résoudre, où descendantFocusability correspond aux attributs3unité
Cette propriété définit la relation entre viewGroup et ses sous-controles lorsque le view obtient la mise au point.
Les valeurs de cet attribut sont trois :
beforeDescendants : le viewgroup prend la mise au point avant ses contrôles de sous-classe
afterDescendants : le viewgroup ne prend la mise au point que lorsque ses contrôles de sous-classe ne nécessitent pas de mise au point
blocksDescendants : le viewgroup couvre directement les contrôles de sous-classe et obtient la mise au point
Généralement, nous utilisons la troisième méthode, c'est-à-dire ajouter l'attribut android:descendantFocusability="blocksDescendants" au root layout de l'Item layout.
Dans la situation que j'ai rencontrée, l'item layout a un bouton ImageButton, car ce composant a une capacité de capture d'événements forte, presque égal au button ; par conséquent, après l'exécution, le clic sur listviewitem est inefficace. Utilisez cette méthode pour résoudre le problème ; bien sûr, vous pouvez également changer l'imagebutton en imageview pour résoudre ce problème.
Déclaration : Le contenu de cet article est issu d'Internet, propriété de ses auteurs respectifs. Le contenu est contribué et téléversé par les utilisateurs d'Internet, ce site ne détient pas de droits de propriété, n'a pas été édité par l'homme et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)