package com.architjn.acjmusicplayer.utils.adapters; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.architjn.acjmusicplayer.R; import com.architjn.acjmusicplayer.service.PlayerService; import com.architjn.acjmusicplayer.utils.ListSongs; import com.architjn.acjmusicplayer.utils.Utils; import com.architjn.acjmusicplayer.utils.items.Song; import com.squareup.picasso.Picasso; import java.io.File; import java.util.ArrayList; /** * Created by architjn on 28/11/15. */ public class PlaylistSongListAdapter extends RecyclerView.Adapter<PlaylistSongListAdapter.SimpleItemViewHolder> { private ArrayList<Song> items; private int playlistId; private Context context; public PlaylistSongListAdapter(Context context, ArrayList<Song> items, int playlistId) { this.context = context; this.items = items; this.playlistId = playlistId; } @Override public PlaylistSongListAdapter.SimpleItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()). inflate(R.layout.songs_list_item, parent, false); return new SimpleItemViewHolder(itemView); } @Override public void onBindViewHolder(final PlaylistSongListAdapter.SimpleItemViewHolder holder, final int position) { holder.name.setText(items.get(position).getName()); holder.artistName.setText(items.get(position).getArtist()); setAlbumArt(position, holder); setOnClicks(holder, position); } private void setAlbumArt(int position, SimpleItemViewHolder holder) { Picasso.with(context).load(new File(ListSongs.getAlbumArt(context, items.get(position).getAlbumId()))).resize(dpToPx(50), dpToPx(50)).centerCrop().into(holder.img); } private void setOnClicks(final SimpleItemViewHolder holder, final int position) { holder.mainView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new Thread(new Runnable() { public void run() { Intent i = new Intent(); i.setAction(PlayerService.ACTION_PLAY_PLAYLIST); i.putExtra("id", playlistId); i.putExtra("pos", position); context.sendBroadcast(i); } }).start(); } }); holder.menu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { PopupMenu pm = new PopupMenu(context, view); final Intent intent = new Intent(); pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.popup_song_play: intent.setAction(PlayerService.ACTION_PLAY_SINGLE); intent.putExtra("songId", items.get(position).getSongId()); context.sendBroadcast(intent); break; case R.id.popup_song_addtoplaylist: new Utils(context).addToPlaylist(((Activity) context), items.get(position).getSongId()); break; } return false; } }); pm.inflate(R.menu.popup_song); pm.show(); } }); } public int dpToPx(int dp) { DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); return px; } @Override public int getItemCount() { return items.size(); } public class SimpleItemViewHolder extends RecyclerView.ViewHolder { public TextView name, artistName; public View mainView, menu; public ImageView img; public SimpleItemViewHolder(View itemView) { super(itemView); mainView = itemView; img = (ImageView) itemView.findViewById(R.id.song_item_img); name = (TextView) itemView.findViewById(R.id.song_item_name); menu = itemView.findViewById(R.id.song_item_menu); artistName = (TextView) itemView.findViewById(R.id.song_item_artist); } } }