package com.sdsmdg.harjot.MusicDNA.fragments.RecentsFragment; import android.content.Context; import android.graphics.Color; import android.os.AsyncTask; import android.os.Build; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.sdsmdg.harjot.MusicDNA.itemtouchhelpers.ItemTouchHelperAdapter; import com.sdsmdg.harjot.MusicDNA.itemtouchhelpers.ItemTouchHelperViewHolder; import com.sdsmdg.harjot.MusicDNA.activities.HomeActivity; import com.sdsmdg.harjot.MusicDNA.models.LocalTrack; import com.sdsmdg.harjot.MusicDNA.models.Track; import com.sdsmdg.harjot.MusicDNA.models.UnifiedTrack; import com.sdsmdg.harjot.MusicDNA.R; import com.sdsmdg.harjot.MusicDNA.imageloader.ImageLoader; import com.squareup.picasso.Picasso; import java.util.List; /** * Created by Harjot on 19-Jun-16. */ public class RecentsTrackAdapter extends RecyclerView.Adapter<RecentsTrackAdapter.MyViewHolder> implements ItemTouchHelperAdapter { private List<UnifiedTrack> songList; private Context ctx; ImageLoader imgLoader; HomeActivity homeActivity; public interface OnDragStartListener { void onDragStarted(RecyclerView.ViewHolder viewHolder); } public interface onRemoveListener { void updateRecentsFragment(); } private final OnDragStartListener mDragStartListener; onRemoveListener mCallback; public RecentsTrackAdapter(List<UnifiedTrack> songList, RecentsFragment recentsContext, Context ctx) { this.songList = songList; mDragStartListener = recentsContext; mCallback = recentsContext; this.ctx = ctx; homeActivity = (HomeActivity) ctx; imgLoader = new ImageLoader(ctx); } @Override public void onItemMove(int fromPosition, int toPosition) { UnifiedTrack prev = songList.remove(fromPosition); songList.add(toPosition, prev); notifyItemMoved(fromPosition, toPosition); new HomeActivity.SaveRecents().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @Override public void onItemDismiss(int position) { songList.remove(position); notifyItemRemoved(position); if (position < 10) { HomeActivity.continuePlayingList.clear(); for (int i = 0; i < Math.min(10, HomeActivity.recentlyPlayed.getRecentlyPlayed().size()); i++) { HomeActivity.continuePlayingList.add(HomeActivity.recentlyPlayed.getRecentlyPlayed().get(i)); } homeActivity.rAdapter.notifyDataSetChanged(); homeActivity.refreshHeaderImages(); } mCallback.updateRecentsFragment(); new HomeActivity.SaveRecents().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } public class MyViewHolder extends RecyclerView.ViewHolder implements ItemTouchHelperViewHolder { ImageView art; TextView title, artist; public MyViewHolder(View view) { super(view); art = (ImageView) view.findViewById(R.id.img_2); title = (TextView) view.findViewById(R.id.title_2); artist = (TextView) view.findViewById(R.id.url_2); } @Override public void onItemSelected() { itemView.setBackgroundColor(Color.DKGRAY); if (Build.VERSION.SDK_INT >= 21) { itemView.setTranslationZ(12); } } @Override public void onItemClear() { itemView.setBackgroundColor(Color.parseColor("#111111")); if (Build.VERSION.SDK_INT >= 21) { itemView.setTranslationZ(0); } } } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_item_2, parent, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(final RecentsTrackAdapter.MyViewHolder holder, int position) { UnifiedTrack ut = songList.get(position); if (ut.getType()) { LocalTrack lt = ut.getLocalTrack(); imgLoader.DisplayImage(lt.getPath(), holder.art); holder.title.setText(lt.getTitle()); holder.artist.setText(lt.getArtist()); } else { Track t = ut.getStreamTrack(); Picasso.with(ctx) .load(t.getArtworkURL()) .resize(100, 100) .error(R.drawable.ic_default) .placeholder(R.drawable.ic_default) .into(holder.art); holder.title.setText(t.getTitle()); holder.artist.setText(""); } } @Override public int getItemCount() { return songList.size(); } }