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.

È stato utile?

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:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top