动作模式动态修改动作菜单

时间:2014-06-19 04:58:42

标签: android listview

我在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

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:6)

您可以通过显示或隐藏这样的项目来修改onItemCheckedStateChanged()中的菜单:

Menu menu = mode.getMenu();
menu.findItem(R.id.some_item_id).setVisible(false);

其中mode ActionMode传递给onItemCheckedStateChanged