Как создать динамическое контекстное меню в Android?

@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».

Я бы получил строку AAPL из моего адаптера массива, но я не уверен, как я могу получить доступ к индексу адаптеров массива с помощью этого метода.


person Sheehan Alam    schedule 02.09.2010    source источник


Ответы (2)


Пример, если вы используете списки с пользовательским объектом:

@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); 
}
person Jules Colle    schedule 20.06.2012

Приведите menuInfo к объекту AdapterView.AdapterContextMenuInfo. Оттуда вы можете получить position и id элемента в ListView, который был долго нажат.

person CommonsWare    schedule 02.09.2010
comment
AdapterContextMenuInfo = (AdapterContextMenuInfo) информация о меню; // не может быть решено... можете ли вы показать мне, как правильно его выполнить? - person Sheehan Alam; 03.09.2010
comment
@Шихан Алам: Это не AdapterContextMenuInfo. Это AdapterView.AdapterContextMenuInfo. См. этот пример проекта: github.com/commonsguy/cw-android/ дерево/мастер/база данных/константы - person CommonsWare; 03.09.2010
comment
Пример работает только наContextItemSelected, я делаю что-то подобное там. Как насчет onCreateContextMenu? Я не могу использовать ContextMenuInfo... - person Sheehan Alam; 03.09.2010
comment
@Шихан Алам: Почему бы и нет? Объект должен быть AdapterView.AdapterContextMenuInfo, так как есть только две конкретные реализации ContextMenuInfo, и вы не работаете с ExpandableListView. - person CommonsWare; 03.09.2010