package com.architjn.acjmusicplayer.utils.adapters;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
import android.support.v7.graphics.Palette;
import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
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.ui.layouts.activity.AlbumActivity;
import com.architjn.acjmusicplayer.utils.ListSongs;
import com.architjn.acjmusicplayer.utils.Utils;
import com.architjn.acjmusicplayer.utils.items.Album;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import java.io.File;
import java.util.ArrayList;
/**
* Created by architjn on 28/11/15.
*/
public class ArtistSubListAdapter extends RecyclerView.Adapter<ArtistSubListAdapter.SimpleItemViewHolder> {
private ArrayList<Album> items;
private Context context;
public ArtistSubListAdapter(Context context, long artistId) {
this.context = context;
this.items = ListSongs.getAlbumListOfArtist(context, artistId);
}
@Override
public ArtistSubListAdapter.SimpleItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).
inflate(R.layout.artist_sub_list_item, parent, false);
return new SimpleItemViewHolder(itemView);
}
public int dpToPx(int dp) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}
@Override
public void onBindViewHolder(final ArtistSubListAdapter.SimpleItemViewHolder holder, final int position) {
holder.name.setText(items.get(position).getAlbumTitle());
setOnClickListeners(holder, position);
setAlbumArt(position, holder);
}
private void setAlbumArt(final int position, final SimpleItemViewHolder holder) {
String path = ListSongs.getAlbumArt(context,
items.get(position).getAlbumId());
Utils utils = new Utils(context);
int size = (utils.getWindowWidth() - (2 * utils.dpToPx(1))) / 2;
if (path != null)
Picasso.with(context).load(new File(path)).resize(size,
size).centerCrop().into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
holder.img.setImageBitmap(bitmap);
Palette.generateAsync(bitmap,
new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(final Palette palette) {
holder.nameHolder.setBackgroundColor(palette.getVibrantColor(
palette.getDarkVibrantColor(
palette.getDarkMutedColor(palette.getMutedColor(
ContextCompat.getColor(context,
R.color.colorPrimary))))));
}
}
);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
else {
holder.img.setImageBitmap(utils.getBitmapOfVector(R.drawable.default_art, size, size));
holder.nameHolder.setBackgroundColor(ContextCompat.getColor(context, R.color.colorPrimary));
}
}
private void setOnClickListeners(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(context, AlbumActivity.class);
i.putExtra("albumId", items.get(position).getAlbumId());
i.putExtra("albumName", items.get(position).getAlbumTitle());
context.startActivity(i);
}
}).start();
}
});
}
public void updateList(ArrayList<Album> albums) {
this.items = albums;
}
@Override
public int getItemCount() {
return items.size();
}
public class SimpleItemViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public View mainView, nameHolder;
public ImageView img;
public SimpleItemViewHolder(View itemView) {
super(itemView);
mainView = itemView;
nameHolder = itemView.findViewById(R.id.artist_sub_name_holder);
img = (ImageView) itemView.findViewById(R.id.artist_sub_img);
name = (TextView) itemView.findViewById(R.id.artist_sub_name);
}
}
}