Come rendere casella di controllo controllato nel OnItemClickListener ()?
-
26-10-2019 - |
Domanda
ho una casella di controllo nella mia fila ListView che assomiglia a questo.
===========================================
[CheckBox] [TextView] [TextView] [TextView]
===========================================
il codice XML è qui
<CheckBox
android:id="@+id/course_search_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:clickable="false"
android:focusable="false" />
E ho già fatto la casella di controllo non cliccabile e attivabile in modo che l'evento click sarà passato al ListView.
Quello che voglio fare qui è che quando l'utente clicca il listview, rendono il CheckBox controllato e aggiungere la posizione selezionata di ListView a un ArrayList. Così come posso fare il CheckBox verificata in un OnItemClickListener di ListView?
Aiuto per favore, grazie.
Soluzione
Si potrebbe aggiungere il codice all'interno del tuo OnItemClickListener
:
public void onItemClick(AdapterView parent, View view, int position, long id){
CheckBox box = (CheckBox)view.findViewById(R.id.course_search_checkbox);
box.setChecked(true);
}
Altri suggerimenti
Beh, se si tratta di un unico elenco di selezione, allora avete bisogno di queste API da ListView
per ottenere la posizione / id:
getSelectedItemId()
getSelectedItemPosition()
E ora se è stato implementato l'adattatore per ListView. Lì per le API come bindView
, getView
ecc (a seconda di quale adattatore avete utilizzato), è stato impostato lo stato controllato su base sulle API di cui sopra. Qualcosa di simile
public View getView(int position, View convertView, ViewGroup parent)
{
ListView listView = (ListView)parent; // This is the parent view group passed as argument.
CheckBox cb = (CheckBox)convertView.findViewById(R.id.check_box);
if(getSelectedItemPosition() == position)
cb.setChecked(true);
else
cb.setChecked(true);
}
per selezione multipla è necessario sotto apis da ListView:
getCheckedItemPositions
Il codice per il controllo della casella di controllo sarà simile alla singola selezione (non precisa però).
NOTA: codice di cui è solo per riferimento. Non è un codice ottimizzato. Sicuramente bisogno di modifiche. NOTA: