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.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 ArtistSongListAdapter extends RecyclerView.Adapter<ArtistSongListAdapter.SimpleItemViewHolder> { private static final int ITEM_VIEW_TYPE_HEADER = 0; private static final int ITEM_VIEW_TYPE_ITEM = 1; private View header; private ArrayList<Song> items; private Context context; public ArtistSongListAdapter(Context context, View header, ArrayList<Song> items) { this.context = context; this.header = header; this.items = items; } public boolean isHeader(int position) { return position == 0; } @Override public ArtistSongListAdapter.SimpleItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == ITEM_VIEW_TYPE_HEADER) return new SimpleItemViewHolder(header); View itemView = LayoutInflater.from(parent.getContext()). inflate(R.layout.songs_list_item, parent, false); return new SimpleItemViewHolder(itemView); } @Override public void onBindViewHolder(final ArtistSongListAdapter.SimpleItemViewHolder holder, final int position) { if (isHeader(position)) return; holder.name.setText(items.get(position - 1).getName()); holder.artistName.setText(items.get(position - 1).getArtist()); setAlbumArt(position - 1, holder); setOnClicks(holder, position - 1); } private void setAlbumArt(int position, SimpleItemViewHolder holder) { String path = ListSongs.getAlbumArt(context, items.get(position).getAlbumId()); Utils utils = new Utils(context); int size = utils.dpToPx(50); if (path != null) Picasso.with(context).load(new File(path)).resize(size, size).centerCrop().into(holder.img); else { holder.img.setImageBitmap(utils.getBitmapOfVector(R.drawable.default_art, size, size)); } } 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_ARTIST); i.putExtra("name", items.get(position).getArtist()); 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(); } }); } @Override public int getItemCount() { return items.size() + 1; } @Override public int getItemViewType(int position) { if (isHeader(position)) return ITEM_VIEW_TYPE_HEADER; else return ITEM_VIEW_TYPE_ITEM; } 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); } } }