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