package com.sdsmdg.harjot.MusicDNA.fragments.FavouritesFragment; import android.content.Context; import android.graphics.Color; import android.os.AsyncTask; import android.support.v4.view.MotionEventCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MotionEvent; 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 20-May-16. */ public class FavouriteTrackAdapter extends RecyclerView.Adapter<FavouriteTrackAdapter.MyViewHolder> implements ItemTouchHelperAdapter { private List<UnifiedTrack> favouriteList; private Context ctx; private ImageLoader imgLoader; public interface OnDragStartListener { void onDragStarted(RecyclerView.ViewHolder viewHolder); } public interface onEmptyListener { void onEmpty(); } public interface onMoveRemoveistener { void updateFavFragment(); } private final OnDragStartListener mDragStartListener; private onEmptyListener mCallback; private onMoveRemoveistener mCallback2; public FavouriteTrackAdapter(List<UnifiedTrack> favouriteList, FavouritesFragment favContext, Context ctx) { this.mDragStartListener = favContext; this.mCallback = favContext; this.mCallback2 = favContext; this.favouriteList = favouriteList; this.ctx = ctx; imgLoader = new ImageLoader(ctx); } public class MyViewHolder extends RecyclerView.ViewHolder implements ItemTouchHelperViewHolder { ImageView art; TextView title, artist; View indicator; ImageView holderImg; public MyViewHolder(View view) { super(view); art = (ImageView) view.findViewById(R.id.img); title = (TextView) view.findViewById(R.id.title); artist = (TextView) view.findViewById(R.id.url); indicator = view.findViewById(R.id.currently_playing_indicator); holderImg = (ImageView) view.findViewById(R.id.holderImage); } @Override public void onItemSelected() { itemView.setBackgroundColor(Color.DKGRAY); } @Override public void onItemClear() { itemView.setBackgroundColor(Color.parseColor("#111111")); } } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_item, parent, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(final MyViewHolder holder, int position) { UnifiedTrack ut = favouriteList.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(""); } holder.holderImg.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) { mDragStartListener.onDragStarted(holder); } return false; } }); } @Override public int getItemCount() { return favouriteList.size(); } @Override public void onItemMove(int fromPosition, int toPosition) { UnifiedTrack prev = favouriteList.remove(fromPosition); favouriteList.add(toPosition, prev); notifyItemMoved(fromPosition, toPosition); mCallback2.updateFavFragment(); new HomeActivity.SaveFavourites().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @Override public void onItemDismiss(int position) { favouriteList.remove(position); notifyItemRemoved(position); if (favouriteList.size() == 0) { mCallback.onEmpty(); } else { mCallback2.updateFavFragment(); } new HomeActivity.SaveFavourites().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } }