首页 > 解决方案 > 没有选中项时如何完成 ActionMode?

问题描述

我想在没有选择项目时完成动作模式。我尝试了下面的代码,但没有成功。

    bookAdapter.setOnLongClickListener(new RecyclerViewAdapter.OnLongClickListener() {

        @Override
        public void onLongClick() {

            if(mActionMode != null) {
                if(bookAdapter.getSelectedBooks().isEmpty()) {
                    mActionMode.finish();
                }
                return;
            }

            ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

                @Override
                public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                    mode.getMenuInflater().inflate(R.menu.delete_book_menu, menu);
                    buttonAddBook.setVisibility(View.INVISIBLE);
                    return true;
                }

                @Override
                public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                    return false;
                }

                @Override
                public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.delete_book :
                            for(Book book : bookAdapter.getSelectedBooks()) {
                                bookViewModel.delete(book);
                            }
                            mode.finish();
                            return true;
                    default:
                        return false;
                    }
                }

                @Override
                public void onDestroyActionMode(ActionMode mode) {
                    mActionMode = null;
                    for(Book book : bookAdapter.getBookList()) {
                        book.setSelected(false);
                        bookAdapter.notifyDataSetChanged();
                    }
                    buttonAddBook.setVisibility(View.VISIBLE);
                }
            };
            mActionMode = startSupportActionMode(mActionModeCallback);
        }
    });

但是当我更改代码时,例如当我尝试在选择 2 个项目时完成模式时,它可以工作。如下:

            if(mActionMode != null) {
                if(bookAdapter.getSelectedBooks().size() == 2) {
                    mActionMode.finish();
                }
                return;
            }

我究竟做错了什么?如果您能帮助我,我将不胜感激。提前致谢。

标签: javaandroidandroid-studioandroid-recyclerviewandroid-actionmode

解决方案


你用过recyclerview-selection吗?

我认为这篇文章会很有用。 https://proandroiddev.com/a-guide-to-recyclerview-selection-3ed9f2381504


推荐阅读