2010-09-02 136 views
1
@Override 
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 

     super.onCreateContextMenu(menu, v, menuInfo); 
     menu.setHeaderTitle("Selection Options"); 
     menu.add(0, v.getId(), 0, "Remove"); 
    } 

我希望我的菜单说“删除AAPL”如何在android中创建动态上下文菜单?

我会从我的阵列适配器字符串AAPL,但我不知道我怎样才能从这种方法来访问我的数组适配器指数。

回答

2

铸造menuInfoAdapterView.AdapterContextMenuInfo对象。从那里,您可以获得长时间点击的ListView中物品的positionid

+0

= AdapterContextMenuInfo(AdapterContextMenuInfo)menuInfo; //无法解决...你能告诉我如何正确投射它吗? – 2010-09-02 23:34:37

+0

@Sheehan Alam:它不是'AdapterContextMenuInfo'。它是'AdapterView.AdapterContextMenuInfo'。看到这个示例项目:http://github.com/commonsguy/cw-android/tree/master/Database/Constants/ – CommonsWare 2010-09-02 23:45:02

+0

该示例仅适用于ContextContextItemSelected,我正在做类似的事情。如何为onCreateContextMenu?我无法投出ContextMenuInfo ... – 2010-09-03 00:08:38

5

实施例,如果使用的是具有自定义对象列表视图:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 

    AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; 
    MyObject obj = (MyObject) myListView.getItemAtPosition(info.position); 

    menu.setHeaderTitle("Selection Options"); 
    menu.add(0, v.getId(), 0, "Remove " + obj.name); 
}