English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nel processo di sviluppo quotidiano, la nostra ListView potrebbe non essere solo un semplice display di testo o pulsanti, ma più spesso un layout complesso. In questo caso, dobbiamo scrivere il layout e l'adapter personalizzato, di solito ereditando da BaseAdapter, come mostrato nel codice di esempio di seguito. Quando si scrive l'evento di clic del ListView, OnItemClickListener, il metodo onItemClick non viene eseguito, il che causa che l'evento di clic dell'Item del ListView non funzioni. L'evento di clic della View dell'Item può essere gestito nel metodo getView. La ragione principale per cui l'intero Item non risponde agli eventi di clic è che, nel tuo Item personalizzato, ci sono controlli come ImageButton, Button, CheckBox (o anche sottoclassi di Button o Checkable), che catturano il focus. Pertanto, spesso quando si clicca sull'item, è il sottocontrolllo a cambiare, non l'item stesso.
In questo momento, è possibile utilizzare descendantFocusability per risolvere il problema, tra cui ci sono 3 attributi corrispondenti a descendantFocusability
Questa proprietà definisce la relazione tra viewGroup e i suoi controlli figli quando un view ottiene l'attenzione.
I valori dell'attributo sono tre:
beforeDescendants: il viewgroup ottiene l'attenzione prima dei controlli figli.
afterDescendants: il viewgroup ottiene l'attenzione solo quando i controlli figli non hanno bisogno di ottenere l'attenzione.
blocksDescendants: il viewgroup copre i controlli figli e ottiene direttamente l'attenzione.
Di solito usiamo la terza opzione, ossia aggiungere l'attributo android:descendantFocusability="blocksDescendants" nel layout di root dell'Item.
La situazione che ho incontrato è che la layout di item ha un pulsante ImageButton, poiché questo componente ha una forte capacità di catturare eventi, è quasi come il pulsante di root; pertanto, dopo l'esecuzione, il clic sul listViewitem non funziona. Risolvere il problema con il metodo menzionato sopra; naturalmente, è anche possibile sostituire l'ImageButton con un ImageView per risolvere questo problema.
Dichiarazione: il contenuto di questo articolo è stato raccolto da Internet, il copyright è proprietà del rispettivo proprietario, il contenuto è stato contribuito autonomamente dagli utenti di Internet e caricato autonomamente; questo sito non detiene i diritti di proprietà, non è stato elaborato manualmente e non assume responsabilità per le responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, è gradito inviare una email a: notice#oldtoolbag.com (al momento dell'invio dell'email, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, questo sito rimuoverà immediatamente il contenuto sospetto di violazione del copyright.