Мой фрагмент содержит viewpager, который содержит listView
Эти строки listView отображают миниатюру слева и некоторый текст справа. Как и в приложении Gmail, когда я нажимаю на миниатюру, я хочу, чтобы оно переключилось в режим действия. При нажатии в другом месте открывается другое действие, связанное с конкретной нажатой строкой. Эта часть работает нормально.
В моем адаптере у меня есть следующий код
viewHolder.getImage().setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
documentFragments.setActionMode(true);
}
});
то в моем фрагменте у меня есть следующий код
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void setActionMode(final boolean enabled) {
if (enabled && this.actionModeEnabled) {
return;
}
if (!enabled && !this.actionModeEnabled) {
return;
}
this.currentAdapter.setActionModeEnabled(enabled);
if (enabled) {
this.listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
this.listView.startActionMode(new ActionMode.Callback() {
@Override
public boolean onPrepareActionMode(final ActionMode mode, final Menu menu) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
SOME CODE
}
@Override
public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
mode.setTitle(getActivity().getString(R.string.selectDocuments));
getActivity().getMenuInflater().inflate(R.menu.documents_action_menu, menu);
// force the checkbox display
DocumentsFragment.this.currentAdapter.notifyDataSetChanged();
return true;
}
@Override
public boolean onActionItemClicked(final ActionMode mode, final MenuItem item) {
SOME CODE
}
});
} else {
this.listView.setChoiceMode(AbsListView.CHOICE_MODE_NONE);
}
this.actionModeEnabled = enabled;
}
Поэтому, когда я нажимаю на миниатюру, все работает нормально, я показываю флажок в строке, а меню параметров actionMode отображается в используемом мной appcompat. Теперь я хочу нажать в любом месте строки списка, чтобы выбрать/отменить выбор строк. Вот где это не работает.
Вот мой код:
private void initControls() {
this.listView = (ListView) this.view.findViewById(android.R.id.list);
registerForContextMenu(this.listView);
this.listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(final AdapterView<?> parent, final View view, final int position, final long id) {
if (this.actionModeEnabled) {
final boolean isChecked = this.listView.isItemChecked(position);
DO SOMETHING
} else {
DO SOMETHING
}
}
Когда не в actionMode вызывается onItemClick, но когда он находится в actionMode, он больше не вызывается...
Как я могу получить информацию о том, что строка была нажата в режиме действия?