package com.architjn.acjmusicplayer.utils.adapters; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; import com.architjn.acjmusicplayer.R; import com.architjn.acjmusicplayer.service.PlayerService; import com.architjn.acjmusicplayer.utils.handlers.PlaylistDBHelper; import com.architjn.acjmusicplayer.utils.items.Playlist; import java.util.ArrayList; /** * Created by architjn on 28/11/15. */ public class AddToPlaylistDialogListAdapter extends RecyclerView.Adapter<AddToPlaylistDialogListAdapter.SimpleItemViewHolder> { private ArrayList<Playlist> items; private long songId; private Context context; private MaterialDialog dialog; public AddToPlaylistDialogListAdapter(Context context, ArrayList<Playlist> items, long songId) { this.context = context; this.items = items; this.songId = songId; } @Override public AddToPlaylistDialogListAdapter.SimpleItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()). inflate(R.layout.playlist_dialog_item, parent, false); return new SimpleItemViewHolder(itemView); } @Override public void onBindViewHolder(final AddToPlaylistDialogListAdapter.SimpleItemViewHolder holder, final int position) { holder.mainView.setBackgroundColor(0xffffffff); holder.name.setText(items.get(position).getPlaylistName()); holder.count.setText(context.getResources().getString(R.string.songs) + " " + items.get(position).getSongCount()); holder.menu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final PlaylistDBHelper helper = new PlaylistDBHelper(context); PopupMenu pm = new PopupMenu(context, view); pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.popup_playlist_play: playPlaylist(position); break; case R.id.popup_playlist_shuffle: break; case R.id.popup_playlist_rename: renameDialog(helper, position); break; case R.id.popup_playlist_delete: helper.deletePlaylist(items.get(position).getPlaylistId()); updateNewList(helper.getAllPlaylist()); break; } return false; } }); pm.inflate(R.menu.popup_playlist); pm.show(); } }); holder.mainView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { PlaylistDBHelper helper = new PlaylistDBHelper(context); helper.addSong((int) songId, items.get(position).getPlaylistId()); items = helper.getAllPlaylist(); notifyDataSetChanged(); dialog.dismiss(); Toast.makeText(context, R.string.added_to_playlist, Toast.LENGTH_SHORT).show(); } }); } public void updateNewList(ArrayList<Playlist> newList) { items = newList; notifyDataSetChanged(); } public void playPlaylist(final int position) { if (items.get(position).getSongCount() != 0) new Thread(new Runnable() { public void run() { Intent i = new Intent(); i.setAction(PlayerService.ACTION_PLAY_PLAYLIST); i.putExtra("id", items.get(position).getPlaylistId()); context.sendBroadcast(i); } }).start(); } private void renameDialog(final PlaylistDBHelper helper, final int position) { final EditText edittext = new EditText(context); AlertDialog.Builder alert = new AlertDialog.Builder(context); alert.setTitle("Rename"); alert.setView(edittext); alert.setPositiveButton("Done", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { if (edittext.getText().toString().matches("")) { renameDialog(helper, position); } else { helper.renamePlaylist(edittext.getText().toString(), items.get(position).getPlaylistId()); updateNewList(helper.getAllPlaylist()); notifyDataSetChanged(); } } }); alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } }); alert.show(); } public void setDialog(MaterialDialog dialog) { this.dialog = dialog; } @Override public int getItemCount() { return items.size(); } public void updateList(ArrayList<Playlist> allPlaylist) { this.items = allPlaylist; notifyDataSetChanged(); } public class SimpleItemViewHolder extends RecyclerView.ViewHolder { public View mainView, menu; public TextView name, count; public SimpleItemViewHolder(View itemView) { super(itemView); mainView = itemView; name = (TextView) itemView.findViewById(R.id.playlist_dialog_name); menu = itemView.findViewById(R.id.playlist_dialog_menu); count = (TextView) itemView.findViewById(R.id.playlist_dialog_song_count); } } }