2010-09-02 6 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 объект. Оттуда вы можете получить position и id предмета в ListView, который был длинным.

+0

AdapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo; // Не могу разрешить ... Можете ли вы показать мне, как правильно его использовать? –

+0

@Sheehan Alam: Это не 'AdapterContextMenuInfo'. Это 'AdapterView.AdapterContextMenuInfo'. См. Этот пример проекта: http://github.com/commonsguy/cw-android/tree/master/Database/Constants/ – CommonsWare

+0

Пример работает только наContextItemSelected, я делаю что-то подобное. Как насчет onCreateContextMenu? Я не могу использовать ContextMenuInfo ... –

5

Пример при использовании ListViews с пользовательским объектом:

@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); 
} 
Смежные вопросы