I extend AbsListView.MultiChoiceModeListener
for multi selection in ListView
, I want to change the action menu dynamically (when more than one ListView
item selected).
private class ModeCallback implements ListView.MultiChoiceModeListener {
//inflate menu
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.compose_multi_select_menu, menu);
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
//want to remove some menu here, but not work
if (getListView().getCheckedItemCount() > 1) {
MenuItem item = menu.getItem(5);
menu.removeItem();
}
}
}
我尝试删除
MenuItem
中的 onPrepareActionMode()
,但不起作用。还尝试了 mode.invalidate()
中的 onItemCheckedStateChanged()
。实际上,我发现在
onPrepareActionMode()
中传入的 menu
根本没有 MenuItem
。任何人都可以帮忙吗?
最佳答案
您可以通过显示或隐藏这样的项目来修改 onItemCheckedStateChanged() 中的菜单:
Menu menu = mode.getMenu();
menu.findItem(R.id.some_item_id).setVisible(false);
其中
mode
是传递给 ActionMode
的 onItemCheckedStateChanged
关于android - Action Mode 动态修改 Action 菜单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24299063/