onItemCheckedStateChanged

onItemCheckedStateChanged

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 是传递给 ActionModeonItemCheckedStateChanged

关于android - Action Mode 动态修改 Action 菜单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24299063/

10-13 08:39