IsItemChecked всегда возвращает противоположность тому, что предполагается, когда внутри onItemClickListener?

В настоящее время у меня есть ListView , который активирует контекстный ActionBar в OnItemLongClickListener .

Я пытаюсь сделать так, чтобы элементы можно было выбрать, щелкнув по ним, но только при появлении контекстного ActionBar .

Проблема в том, что когда я проверяю isItemChecked() , чтобы переключить состояние выбора элемента, он всегда возвращает противоположность тому, что он должен.

Вот как я реализовал 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: Это довольно bizzare .. этот код переключает состояние выбора:

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

Что происходит!?

EDIT 2: Ах, похоже, что андроид автоматически проверяет и снимает каждый элемент самостоятельно … есть ли способ изменить это поведение и обработать его сам?

Solutions Collecting From Web of "IsItemChecked всегда возвращает противоположность тому, что предполагается, когда внутри onItemClickListener?"