在CHOICE_MODE_MULTIPLE_MODAL上完成上下文操作栏

时间:2015-06-28 07:17:33

标签: android android-listview

我有一个ListView,当用户长按任何特定项目时,CAB启动。

我正在使用,

getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

和MultiChoiceModeListener拦截回调,

getListView().setMultiChoiceModeListener(new MultiChoiceModeListener() {

            @Override
            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public void onDestroyActionMode(ActionMode mode) {
                // TODO Auto-generated method stub
            }

            @Override
            public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                // TODO Auto-generated method stub

                MenuInflater inflater = getMenuInflater();
                inflater.inflate(R.menu.contextual_menu, menu);
                return true;
            }

            @Override
            public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public void onItemCheckedStateChanged(ActionMode mode, int position,
                    long id, boolean checked) {
                // TODO Auto-generated method stub
            }
        });

现在,在我的onResume()(在这个监听器之外),我想检查我的ActionMode是否可见/不可见,如果是,那么根据某些条件,我想手动禁用/启用它。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

我等了一天但没有得到任何答案并自己解决了。我不知道这种方法是否完美。

声明一个字段ActionMode

ActionMode mActionMode;

现在在onCreateActionMode()方法中,你得到了ActionMode,

public boolean onCreateActionMode(ActionMode mode, Menu menu) {
    mActionMode = mode;
}

在onDestroyActionMode()中,

public void onDestroyActionMode(ActionMode mode) {
    mActionMode = null;
}

现在代码中的任何地方只检查mActionMode是否为null,以检查ActionMode是启用还是禁用。

希望这会有所帮助。如果您有更好的解决方案,请发布答案。