java - 没有选中项时如何完成 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;
}
我究竟做错了什么?如果您能帮助我,我将不胜感激。提前致谢。
解决方案
你用过recyclerview-selection
吗?
我认为这篇文章会很有用。 https://proandroiddev.com/a-guide-to-recyclerview-selection-3ed9f2381504
推荐阅读
- dataweave - 仅当条件为真时更改数组元素中 json 的字段
- apache-spark - 每个键触发聚合事件集,包括它们的更改时间戳
- ios - 如何在 iOS 的 NotificationHub 中设置基于令牌的身份验证
- ios - 单击collectionview中定义的图像时,图像编辑器未打开
- javascript - js中一次输入多个字符
- c - 如何阻止 Cocoapods 在伞中导入私有 Headders
- azure - 使用 Select-Object 更改属性的数据类型并添加计算属性
- vue.js - 观察两个变量,只有在两者都被改变时才触发?VueJs
- google-apps-script - 通过 Google Apps 脚本将电子表格发布为网络应用程序
- java - jooq中带有外键和主键的重复表