Android 根据选择的数量更改操作栏项目
如何根据在RecyclerView中选择了多少项来更改Android 根据选择的数量更改操作栏项目,android,android-actionbar,android-recyclerview,contextual-action-bar,multipleselection,Android,Android Actionbar,Android Recyclerview,Contextual Action Bar,Multipleselection,如何根据在RecyclerView中选择了多少项来更改ActionBar菜单包含的内容?例如,当在“选择模式”中选择一张卡时,我希望编辑图标(铅笔)可见。一旦选择了多个项目,我希望编辑图标从选项中消失 下面的代码:我试图创建一个条件,在该条件下,mdelectionmode创建一个菜单,如果所选项目的数量为,则会显示一个编辑图标。使用ActionMode实例操作ActionBar菜单 @Override public boolean onLongClick(View v) { this.
ActionBar
菜单包含的内容?例如,当在“选择模式”中选择一张卡时,我希望编辑图标(铅笔)可见。一旦选择了多个项目,我希望编辑图标从选项中消失
下面的代码:我试图创建一个条件,在该条件下,
mdelectionmode
创建一个菜单,如果所选项目的数量为,则会显示一个编辑图标。使用ActionMode实例操作ActionBar菜单
@Override
public boolean onLongClick(View v) {
this.actionMode = getActionBar().startActionMode(mDeleteMode);
mMultiSelector.setSelected(this, true);
return true;
}
下面是初始化menuItem
的地方。请记住,onCreateActionMode
驻留在新的modalMultiSelector或Callback
的创建过程中
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
super.onCreateActionMode(actionMode, menu);getActivity().getMenuInflater().inflate(R.menu.menu_subject_manager, menu);
mEditItem = actionMode.getMenu().findItem(R.id.action_edit);
mActionMenu = actionMode.getMenu();
return true;
}
现在,mEditItem
可以轻松删除或替换,因为mEditItem
是一个实例变量。我将在我的onClick()中提供我的实现
就在这里。对我来说,我只需要根据在任何给定时刻选择的项目数量,让一个项目消失/重新出现。.setVisible()
方法为我解决了这个问题。我希望这能帮助有类似问题的人
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
super.onCreateActionMode(actionMode, menu);getActivity().getMenuInflater().inflate(R.menu.menu_subject_manager, menu);
mEditItem = actionMode.getMenu().findItem(R.id.action_edit);
mActionMenu = actionMode.getMenu();
return true;
}
@Override
public void onClick(View v) {
if (sInfo == null) {
return;
}
if (!mMultiSelector.tapSelection(this)) {
// if not in selection mode, this is handled
}
if (mMultiSelector.tapSelection(this)) {
mMultiSelector.tapSelection(this);
switch (mMultiSelector.getSelectedPositions().size()) {
case 0:
actionMode.finish();
break;
case 1:
mEditItem.setVisible(true);
break;
case 2:
mEditItem.setVisible(false);
break;
default:
break;
}
}
}