2013-02-28 9 views
8

Attualmente dispongo di un ListView, che attiva un Contesto ActionBar nello ListView.isItemChecked restituisce sempre l'opposto di quello che si suppone quando si trova in un onItemClickListener?

Sto cercando di renderlo in modo che gli elementi possano essere selezionati facendo clic su di essi, ma solo quando il contestuale ActionBar è attivo.

Il problema è che quando si verifica isItemChecked(), in modo da alternare lo stato di selezione dell'oggetto, viene sempre restituito il contrario di ciò che si suppone.

Ecco come ho implementato il OnItemClickListener:

list.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     if (mActionMode != null){ 
      list.setItemChecked(position, !list.isItemChecked(position)); 
     } 
     else{ 
      list.setItemChecked(position, false); 
     } 

    } 

}); 

EDIT: Questo è piuttosto bizzarro .. questo codice alterna lo stato di selezione:

list.setItemChecked(position, list.isItemChecked(position)); 

cosa sta succedendo sopra!?

EDIT 2: Ah, sembra che Android stia controllando e deselezionando automaticamente ogni elemento da solo ... c'è un modo per cambiare questo comportamento e gestirlo da solo?

+0

Abbiamo bisogno di capire che cosa è nel metodo mActionMode, in quanto sta attivando se la casella di controllo deve essere controllata o meno. Sei in grado di includere il codice per il metodo 'mActionMode()'? Grazie. –

risposta

1

Ecco la documentazione per setItemChecked metodo: Imposta lo stato controllato della posizione

specificato nella riga

list.setItemChecked(position, !list.isItemChecked(position)); 

state esplicitamente impostando al contrario di ciò che isItemChecked rendimenti negando la argomentazione secoend nella dichiarazione

Problemi correlati