GridView CAB не отображается при длинном щелчке
gridView = (ExpandableGridview)findViewById(R.id.grid);
gridView.setChoiceMode(ExpandableGridview.CHOICE_MODE_MULTIPLE_MODAL);
gridView.setMultiChoiceModeListener(new ExpandableGridview.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
if(checked) {
checkedItems.add(position);
} else {
checkedItems.remove(checkedItems.indexOf(position));
}
int checkedCount = gridView.getCheckedItemCount();
mode.setTitle(checkedCount + " selected");
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
Log.i("test", "onCreateActionMode");
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
menu.findItem(R.id.done).setVisible(false);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
menu.findItem(R.id.done).setVisible(true);
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.done:
Toast.makeText(MainActivity.this, "sent", Toast.LENGTH_LONG).show();
mode.finish();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
checkedItems.removeAll(checkedItems);
}
});
gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
gridView.setItemChecked(position,!checkedItems.contains(position));
return true;
}
});
Я пытаюсь выбрать несколько изображений для хранения в другом месте. Я пробовал с GridView
а также ExpandableGridView
но onCreateActionMode
никогда не звонил. его методы обратного вызова onItemCLick
а также onItemLongClick
тоже не работают.
работает нормально, если я обращаюсь onClick
через класс адаптера. Пожалуйста, помогите, если я что-то упустил.
1 ответ
GridView
начинается ActionMode
при длительном нажатии на один из его элементов по умолчанию. Итак, попробуйте удалить свой кастом OnItemLongClickListener
и посмотрим, работает ли это.