Autore Topic: Catturare una checkbox in una ListView tramite la position  (Letto 567 volte)

Offline MrKrabs

  • Utente junior
  • **
  • Post: 94
  • Respect: +4
    • Mostra profilo
Catturare una checkbox in una ListView tramite la position
« il: 09 Gennaio 2013, 00:40:52 CET »
0
Ciao a tutti,

il mio obiettivo è quello di ricreare una selezione tipo quella dell'applicazione gmail.

il seguente codice (non completo)  permette la scelta multipla degli item in una lista e fa apparire il context menu.
Codice (Java): [Seleziona]
lista.setMultiChoiceModeListener(new MultiChoiceModeListener() {
    public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
       
        mode.setTitle(String.valueOf(lista.getCheckedItemCount())+" selezionate");

    }

    ....

}

Nel mio layout ho una ListView in cui ogni item contiene una text view e una checkbox (come in gmail in pratica).

onItemCheckedStateChanged (presente nel codice sopra) = cattura se la selezione dell'item cambia, e fin qui ci siamo.

Quello che voglio fare è modificare lo stato della checkbox da unchecked a checked nel caso in cui l'item viene selezionato.

nel codice sopra ho la "position", è possibile recuperare in qualche modo una checkbox in una lista tramite la position? se si come?



Ho pensato di utilizzare lista.getCheckedItemPosition() ma finora non mi è venuto in mente niente su come utilizzarlo.

Grazie in anticipo!

Offline MrKrabs

  • Utente junior
  • **
  • Post: 94
  • Respect: +4
    • Mostra profilo
Re:Catturare una checkbox in una ListView tramite la position
« Risposta #1 il: 09 Gennaio 2013, 01:33:19 CET »
0
Ok! soluzione trovata!

Posto il codice che potrebbe risultare utile a qualcun altro:
Codice (Java): [Seleziona]
lista.setMultiChoiceModeListener(new MultiChoiceModeListener() {
    public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
       
        mode.setTitle(String.valueOf(lista.getCheckedItemCount())+" selezionate");

        CheckBox cb = (CheckBox)lista.getChildAt(position).findViewById(R.id.checkbox1);
       
        if(checked){
            cb.setChecked(true);
        }else{
            cb.setChecked(false);
        }
    }

    ....

}