Всплывающее меню вызовов Android

Я работаю над простым музыкальным проигрывателем для своего вводного курса по приложениям для Android. Я хочу иметь возможность добавлять песни в список воспроизведения, указанный в моем контекстном меню. Когда я нажимаю на элемент контекстного меню addtoplaylist, я хочу, чтобы всплывающее меню появилось. Как мне вызвать всплывающее меню? Также, если у вас есть предложения по заполнению моего всплывающего меню, а не цикла for, это тоже было бы здорово.

У меня есть прослушиватель контекстного меню, который выглядит так.

    @Override
public boolean onContextItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.share:
            shareIt();
            return true;
        case R.id.Store:
            musicStore();
            return true;
        case R.id.addtoplaylist:
        // open popup menu
            return true;
        case R.id.snippet:
            snippet(tem1);
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}    

И у меня есть всплывающее меню, которое выглядит так.

        public void showPopup(View v) {

    int i = view.getPlaylists().size();
    ArrayList<String> playlist = view.getPlaylists();

    PopupMenu popup = new PopupMenu(this, v);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.popup_menu, popup.getMenu());
    for(int k = 0; k > i;k++){
        popup.getMenu().add(playlist.get(k));
    }

    popup.show();
}

person Xearo    schedule 03.10.2013    source источник


Ответы (2)


Как вы можете видеть здесь, PopupMenu V — это просто якорь, поэтому вы может передать, например, ListView, который содержит ваш элемент. Или, если вы действительно хотите, чтобы всплывающее меню было привязано к элементу, посмотрите здесь

Вы получаете свое целевое представление, как это.

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
View  v = info.targetView;

Итак, после звонка

showPopUp(v);

Для вашего цикла я не вижу лучшего решения.

person HoodVinci    schedule 03.10.2013

принятый вопрос в порядке, но для части цикла for вы можете использовать итератор :)

for (String song : playlist) {
    popup.getMenu().add(song);
}
person Rudra    schedule 03.12.2017