2013-02-28 5 views
8

Ich habe derzeit eine ListView, die eine kontextuelle ActionBar in der ListViewOnItemLongClickListener aktiviert.IsItemChecked gibt immer das Gegenteil von dem zurück, was es in einem onItemClickListener sein soll?

Ich versuche es so zu machen, dass Elemente ausgewählt werden können, indem Sie darauf klicken, aber nur wenn der Kontext ActionBar ist.

Das Problem ist, wenn ich isItemChecked() überprüfen, um den Auswahlzustand des Artikels umzuschalten, gibt es immer das Gegenteil von dem, was es soll.

Hier ist, wie ich umgesetzt habe die 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: Das ist ziemlich bizarr .. Dieser Code schaltet der Auswahlzustand:

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

Was geht ist auf!?

BEARBEITEN 2: Ah, es sieht so aus, als würde android jedes Element automatisch aktivieren und deaktivieren ... Gibt es eine Möglichkeit, dieses Verhalten zu ändern und es selbst zu handhaben?

+0

Wir müssen verstehen, was in der mActionMode-Methode ist, da es auslöst, ob das Kontrollkästchen aktiviert sein sollte oder nicht. Können Sie den Code für die 'mActionMode()' Methode einfügen? Vielen Dank. –

Antwort

1

hier ist die Dokumentation zur setItemChecked Methode: den Aktivierungszustand der Position

in der Zeile angegeben Sets

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

Sie explizit auf das Gegenteil dessen, was isItemChecked kehrt setzen die durch Negieren secoend argument in der Anweisung