Elenco personalizzato, facendo clic con caselle di controllo
-
23-08-2019 - |
Domanda
Ho popolato un ListActivity
da un Cursor
utilizzando SimpleCursorAdapter
che inizia un'altra attività quando uno degli elementi della lista sono stati cliccato. Sto anche utilizzando ViewBinder
fare qualche trasformazione personalizzato dei dati.
Voglio aggiungere un CheckBox
per ogni riga della lista in modo ho cambiato la vista e aggiunto un CheckBox
con la gravità a destra.
L'aggiunta della CheckBox
ha rimosso la possibilità di cliccare sugli oggetti. Il metodo onListItemClick
ero imperativo di ListActivity
non si chiama più quando si preme su un elemento della lista. Rimozione del CheckBox
corregge questo. Perché questo?
Inoltre, come posso impostare l'elenco in modo che continui a svolgere il mio funzionalità richieste, se la parte principale della voce di elenco viene cliccato, ma hanno funzionalità aggiuntive quando la CheckBox
nella voce è selezionata? Sarà l'impostazione di un lavoro o di onCheckedChangedListener
è la stessa istanza vista riutilizzati per ogni elemento della lista?
Soluzione 2
Sembra che SimpleCursorAdapter
è troppo primitiva per quello che volevo realizzare.
Ho passato a implementare CursorAdapter
e restituendo una nuova vista utilizzando il LayoutInflater
nel mio attuazione del metodo newView
.
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.alarm_row, parent, false);
}
In Bindview ho quindi impostare un OnClickListener
personalizzato alla mia LinearLayout
principale e poi un altro OnCheckedChangeListener
al CheckBox
.
Per tutto questo a guardare a destra ho dovuto impostare lo sfondo del LinearLayout
per Android di MENUITEM drawable:
android:background="@android:drawable/menuitem_background"
Altri suggerimenti
Come spiegato qui , il clic ascoltatore solo funziona se nessun altro punto di vista è focusable
. Impostazione CheckBox
a focusable="false"
dovrebbe fare il trucco:
<CheckBox android:focusable="false" />