我正在开发一个简单的音乐播放器,用于我的Android应用类介绍。我希望能够将歌曲添加到我的上下文菜单中列出的播放列表中。当我点击我的addtoplaylist contextmenuitem时,我希望我的弹出菜单出现。 如何调用弹出菜单?此外,如果您对如何填充弹出菜单有一些建议,而不是我的for循环,那也很酷。
我有一个contextmenu监听器,看起来像这样。
@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();
}
答案 0 :(得分:0)
正如您在此处所见PopupMenu V只是一个锚点,因此您可以传递包含项目的ListView 或者,如果您确实希望将弹出菜单锚定到该项目,请查看here
你可以得到这样的目标视图。
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
View v = info.targetView;
呼叫后
showPopUp(v);
对于你的循环,我没有看到更好的解决方案。
答案 1 :(得分:0)
接受的问题很好,但对于for循环部分,你可以使用迭代器:)
for (String song : playlist) {
popup.getMenu().add(song);
}