0

我正在为我的 Android 应用程序类介绍制作一个简单的音乐播放器。我希望能够将歌曲添加到我的上下文菜单中列出的播放列表中。当我单击我的 addtoplaylist contextmenuitem 时,我希望我的弹出菜单出现。如何调用我的弹出菜单?此外,如果您对如何填充我的弹出菜单而不是我的 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();
}
4

2 回答 2

0

正如您在此处看到的那样, PopupMenu V 只是一个锚点,因此您可以传递例如包含您的项目的 ListView 或者如果您真的希望将弹出菜单锚定到项目,请查看此处

你得到你的目标视图是这样的。

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

所以打电话后

showPopUp(v);

对于您的循环,我没有看到更好的解决方案。

于 2013-10-03T16:45:09.407 回答
-1

接受的问题很好,但是对于 for 循环部分,您可以使用迭代器:)

for (String song : playlist) {
    popup.getMenu().add(song);
}
于 2017-12-03T16:47:17.257 回答