如何实现上下文菜单在Android上ListActivity?如何实现上下文菜单在Android上L

2019-05-13 08:57发布

如何实现由长单击或点击上正在使用内置的布局和ListAdapter一个ListActivity触发的上下文菜单?

Answer 1:

在onCreate方法调用registerForContextMenu是这样的:

registerForContextMenu(getListView());

然后填充上的菜单onCreateContextMenu(文本菜单菜单,查看视图,ContextMenuInfo menuInfo) 。 该menuInfo参数可以提供关于该项目是长期的点击这样的信息:

AdapterView.AdapterContextMenuInfo info;
try {
    info = (AdapterView.AdapterContextMenuInfo) menuInfo;
} catch (ClassCastException e) {
    Log.e(TAG, "bad menuInfo", e);
    return;
}
long id = getListAdapter().getItemId(info.position);

你通常的方式调用添加菜单项menu.add :

menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string);

当用户拿起一个选项, onContextItemSelected被调用。 此外onMenuItemSelected这一事实并不明确,只是说,你用其他的方法来接收从上下文菜单中调用的文件中说明; 只是知道,不共享的ID。

在onContextItemSelected你可以得到阿霍德的MenuInfo的,因此该项目通过调用选择的ID getMenuInfo() :

try {
    info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
} catch (ClassCastException e) {
    Log.e(TAG, "bad menuInfo", e);
    return false;
}
long id = getListAdapter().getItemId(info.position);


Answer 2:

你也应该看看Activity.registerForContextMenu(查看) 。



Answer 3:

listView = (ListView) findViewById(R.id.listpockets);
registerForContextMenu(listView);



public void onCreateContextMenu(android.view.ContextMenu menu, View v, android.view.ContextMenu.ContextMenuInfo menuInfo) {
    //AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo;
    menu.setHeaderTitle(getString(R.string.titleDelete));   
    menu.add(0, CommonUtil.CONTEXT_MENU__DELETE_ID, 0, getString(R.string.menuDelete));
};
@Override
public boolean onContextItemSelected(MenuItem item) {

    if(item.getItemId() == CommonUtil.CONTEXT_MENU__DELETE_ID)
    {
       AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
       long id = this.listView.getItemIdAtPosition(info.position);
       Log.d(TAG, "Item ID at POSITION:"+id);
    }
    else
    {
        return false;
    }
    return true;
}


文章来源: How do you implement context menu in a ListActivity on Android?