package com.wm.remusic.adapter;
import android.app.Activity;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
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.wm.remusic.R;
import com.wm.remusic.activity.PlaylistSelectActivity;
import com.wm.remusic.fragment.MoreFragment;
import com.wm.remusic.info.MusicInfo;
import com.wm.remusic.service.MusicPlayer;
import com.wm.remusic.uitl.IConstants;
import java.util.ArrayList;
/**
* Created by wm on 2016/3/8.
*/
public class PlaylistDetailAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
final static int FIRST_ITEM = 0;
final static int ITEM = 1;
private ArrayList<MusicInfo> arraylist;
private long playlistId;
private Activity mContext;
private long[] songIDs;
public PlaylistDetailAdapter(Activity context, long playlistid, ArrayList<MusicInfo> mList) {
this.arraylist = mList;
this.mContext = context;
this.playlistId = playlistid;
this.songIDs = getSongIds();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
if (viewType == FIRST_ITEM) {
return new CommonItemViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.common_item, viewGroup, false));
} else {
return new ItemViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.fragment_playlist_detail_item, viewGroup, false));
}
}
//判断布局类型
@Override
public int getItemViewType(int position) {
return position == FIRST_ITEM ? FIRST_ITEM : ITEM;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder itemHolder, final int i) {
if (itemHolder instanceof ItemViewHolder) {
MusicInfo localItem = arraylist.get(i - 1);
((ItemViewHolder) itemHolder).trackNumber.setText(i + "");
((ItemViewHolder) itemHolder).title.setText(localItem.musicName);
((ItemViewHolder) itemHolder).artist.setText(localItem.artist);
((ItemViewHolder) itemHolder).menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MoreFragment morefragment = MoreFragment.newInstance(arraylist.get(i - 1).songId + "", IConstants.MUSICOVERFLOW);
morefragment.show(((AppCompatActivity) mContext).getSupportFragmentManager(), "music");
}
});
} else if (itemHolder instanceof CommonItemViewHolder) {
((CommonItemViewHolder) itemHolder).textView.setText("(共" + arraylist.size() + "首)");
((CommonItemViewHolder) itemHolder).select.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, PlaylistSelectActivity.class);
intent.putParcelableArrayListExtra("ids", arraylist);
intent.putExtra("playlistid", playlistId);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
mContext.startActivity(intent);
}
});
}
}
@Override
public int getItemCount() {
return (null != arraylist ? arraylist.size() + 1 : 0);
}
public long[] getSongIds() {
long[] ret = new long[arraylist.size()];
for (int i = 0; i < arraylist.size(); i++) {
ret[i] = arraylist.get(i).songId;
}
return ret;
}
public void updateDataSet(long playlistid, ArrayList<MusicInfo> arraylist) {
this.arraylist = arraylist;
this.playlistId = playlistid;
}
public class CommonItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView textView;
ImageView select;
CommonItemViewHolder(View view) {
super(view);
this.textView = (TextView) view.findViewById(R.id.play_all_number);
this.select = (ImageView) view.findViewById(R.id.select);
view.setOnClickListener(this);
}
public void onClick(View v) {
//// TODO: 2016/1/20
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
long[] list = new long[arraylist.size()];
for (int i = 0; i < arraylist.size(); i++) {
list[i] = arraylist.get(i).songId;
}
MusicPlayer.playAll(null, list, 0, false);
}
}, 100);
}
}
public class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected TextView title, artist, trackNumber;
protected ImageView menu;
public ItemViewHolder(View view) {
super(view);
this.title = (TextView) view.findViewById(R.id.song_title);
this.artist = (TextView) view.findViewById(R.id.song_artist);
this.trackNumber = (TextView) view.findViewById(R.id.trackNumber);
this.menu = (ImageView) view.findViewById(R.id.popup_menu);
view.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
MusicPlayer.playAll(null, songIDs, getAdapterPosition() - 1, false);
}
}, 100);
}
}
}