我在ListView
中扩展AbsListView.MultiChoiceModeListener
以进行多选,我想动态更改操作菜单(当选择了多个ListView
项时)。
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
。
任何人都可以提供帮助吗?
答案 0 :(得分:6)
您可以通过显示或隐藏这样的项目来修改onItemCheckedStateChanged()中的菜单:
Menu menu = mode.getMenu();
menu.findItem(R.id.some_item_id).setVisible(false);
其中mode
ActionMode
传递给onItemCheckedStateChanged