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 и посмотрим, работает ли это.

Другие вопросы по тегам