Android 短按一下打开CAB

Android 短按一下打开CAB,android,contextmenu,Android,Contextmenu,我有一个列表视图,上面有许多项。当我长时间单击其中一个项目时,它会弹出一个CAB,我可以选择其中一些项目并对它们执行组操作。这太棒了。目前,我在ListView上设置了一个MultiChoiceModelListener来实现这一点(并在下面给出了相关代码) 是否可以通过短时间单击而不是长时间单击来打开此CAB public class ViewInventoryActivity extends ActionBarActivity { private ArrayList<Inven

我有一个列表视图,上面有许多项。当我长时间单击其中一个项目时,它会弹出一个CAB,我可以选择其中一些项目并对它们执行组操作。这太棒了。目前,我在ListView上设置了一个MultiChoiceModelListener来实现这一点(并在下面给出了相关代码)

是否可以通过短时间单击而不是长时间单击来打开此CAB

public class ViewInventoryActivity extends ActionBarActivity
{
    private ArrayList<InventoryEntry> list;
    private ListView listView;
    private ListViewAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_inventory);

        list = getList();
        listView = (ListView) findViewById(R.id.listview_inventory);
        adapter = new ListViewAdapter(this, R.layout.listview_inventory_row, list);
        // This is a custom written adapter

        listView.setAdapter(adapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

        listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener()
        {
            @Override
            public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked)
            {
                mode.setTitle(listView.getCheckedItemCount() + " selected");
                adapter.toggleSelection(position);
                // toggleSelection keeps track of what is currently selected
            }

            @Override
            public boolean onCreateActionMode(ActionMode mode, Menu menu)
            {
                mode.getMenuInflater().inflate(R.menu.menu_view_inventory, menu);
                return true;
            }

            @Override
            public boolean onActionItemClicked(ActionMode mode, MenuItem item)
            {
                return false;
                // This does have some logic, but it's not important here
            }

            @Override
            public void onDestroyActionMode(ActionMode mode)
            {
                adapter.removeSelection();
            }

            @Override
            public boolean onPrepareActionMode(ActionMode mode, Menu menu)
            {
                return false;
            }
        });
    }
}
公共类ViewInventoryActivity扩展了ActionBarActivity
{
私有数组列表;
私有列表视图列表视图;
私有ListViewAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u view\u inventory);
list=getList();
listView=(listView)findViewById(R.id.listView\u库存);
adapter=新的ListViewAdapter(此,R.layout.listview\u inventory\u行,列表);
//这是一个自定义编写的适配器
setAdapter(适配器);
listView.setChoiceMode(listView.CHOICE\u MODE\u MULTIPLE\u MODE);
setMultichoiceModelListener(新的AbsListView.MultichoiceModelListener()
{
@凌驾
public void onItemCheckedStateChanged(ActionMode模式、int位置、长id、布尔选中)
{
mode.setTitle(listView.getCheckedItemCount()+“选定”);
适配器。切换选择(位置);
//toggleSelection跟踪当前选择的内容
}
@凌驾
公共布尔onCreateActionMode(ActionMode模式,菜单)
{
mode.getMenuInflater().充气(R.menu.menu\u view\u inventory,menu);
返回true;
}
@凌驾
公共布尔值onActionItemClicked(ActionMode模式,菜单项)
{
返回false;
//这确实有些道理,但在这里并不重要
}
@凌驾
公共void onDestroyActionMode(ActionMode模式)
{
adapter.removeSelection();
}
@凌驾
公共布尔onPrepareActionMode(操作模式,菜单)
{
返回false;
}
});
}
}

在onclick call startActionMode()中。这不是标准过程。为什么要通过“短”单击来完成?哪里有onClick方法?或者,事实上,我需要把它放在哪里?onActionItemClicked处理CAB已经打开后发生的事情。我想这样做是因为它使应用程序使用起来更简单、更快。我是指listview的监听器。