private void setOnPopupMenuListener(final ItemHolder itemHolder, final int position) {
itemHolder.popupMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final PopupMenu menu = new PopupMenu(mContext, v);
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.popup_song_play_next:
long[] ids = new long[1];
ids[0] = arraylist.get(position).id;
MusicPlayer.playNext(mContext, ids, -1, ListenerUtil.IdType.NA);
break;
case R.id.popup_song_goto_album:
NavigationUtil.goToAlbum(mContext, arraylist.get(position).albumId,
arraylist.get(position).title);
break;
case R.id.popup_song_goto_artist:
NavigationUtil.goToArtist(mContext, arraylist.get(position).artistId,
arraylist.get(position).artistName);
break;
case R.id.popup_song_addto_queue:
long[] id = new long[1];
id[0] = arraylist.get(position).id;
MusicPlayer.addToQueue(mContext, id, -1, ListenerUtil.IdType.NA);
break;
case R.id.popup_song_addto_playlist:
ListenerUtil.showAddPlaylistDialog(mContext, new long[]{arraylist.get(itemHolder.getAdapterPosition()).id});
break;
case R.id.popup_song_delete:
long[] deleteIds = {arraylist.get(position).id};
ListenerUtil.showDeleteDialog(mContext, arraylist.get(position).title, deleteIds,
new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
arraylist.remove(position);
songIDs = getSongIds();
notifyDataSetChanged();
}
});
break;
}
return false;
}
});
menu.inflate(R.menu.popup_song);
menu.show();
}
});
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/popup_song_play_next"
android:title="@string/play_next" />
<item
android:id="@+id/popup_song_addto_queue"
android:title="@string/add_to_queue" />
<item
android:id="@+id/popup_song_addto_playlist"
android:title="@string/add_to_playlist" />
<item
android:id="@+id/popup_song_goto_album"
android:title="@string/go_to_album" />
<item
android:id="@+id/popup_song_goto_artist"
android:title="@string/go_to_artist" />
<item
android:id="@+id/popup_song_delete"
android:title="@string/delete" />
</menu>
itemHolder.popupMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final PopupMenu menu = new PopupMenu(mContext, v);
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.popup_song_play_next:
long[] ids = new long[1];
ids[0] = arraylist.get(position).id;
MusicPlayer.playNext(mContext, ids, -1, ListenerUtil.IdType.NA);
break;
case R.id.popup_song_goto_album:
NavigationUtil.goToAlbum(mContext, arraylist.get(position).albumId,
arraylist.get(position).title);
break;
case R.id.popup_song_goto_artist:
NavigationUtil.goToArtist(mContext, arraylist.get(position).artistId,
arraylist.get(position).artistName);
break;
case R.id.popup_song_addto_queue:
long[] id = new long[1];
id[0] = arraylist.get(position).id;
MusicPlayer.addToQueue(mContext, id, -1, ListenerUtil.IdType.NA);
break;
case R.id.popup_song_addto_playlist:
ListenerUtil.showAddPlaylistDialog(mContext, new long[]{arraylist.get(itemHolder.getAdapterPosition()).id});
break;
case R.id.popup_song_delete:
long[] deleteIds = {arraylist.get(position).id};
ListenerUtil.showDeleteDialog(mContext, arraylist.get(position).title, deleteIds,
new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
arraylist.remove(position);
songIDs = getSongIds();
notifyDataSetChanged();
}
});
break;
}
return false;
}
});
menu.inflate(R.menu.popup_song);
menu.show();
}
});
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/popup_song_play_next"
android:title="@string/play_next" />
<item
android:id="@+id/popup_song_addto_queue"
android:title="@string/add_to_queue" />
<item
android:id="@+id/popup_song_addto_playlist"
android:title="@string/add_to_playlist" />
<item
android:id="@+id/popup_song_goto_album"
android:title="@string/go_to_album" />
<item
android:id="@+id/popup_song_goto_artist"
android:title="@string/go_to_artist" />
<item
android:id="@+id/popup_song_delete"
android:title="@string/delete" />
</menu>