content: package com.wm.remusic.fragment;
  
  import android.content.Intent;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.support.v7.app.ActionBar;
  import android.support.v7.app.AppCompatActivity;
  import android.support.v7.widget.LinearLayoutManager;
  import android.support.v7.widget.RecyclerView;
  import android.support.v7.widget.Toolbar;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.ImageView;
  import android.widget.TextView;
  
  import com.bilibili.magicasakura.widgets.TintImageView;
  import com.wm.remusic.R;
  import com.wm.remusic.activity.SelectActivity;
  import com.wm.remusic.handler.HandlerUtil;
  import com.wm.remusic.info.AlbumInfo;
  import com.wm.remusic.info.MusicInfo;
  import com.wm.remusic.service.MusicPlayer;
  import com.wm.remusic.uitl.CommonUtils;
  import com.wm.remusic.uitl.IConstants;
  import com.wm.remusic.uitl.MusicUtils;
  import com.wm.remusic.widget.DividerItemDecoration;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  
  /**
   * Created by wm on 2016/1/9.
   */
  public class AlbumDetailFragment extends BaseFragment {
  
      private int currentlyPlayingPosition = 0;
      private ActionBar ab;
      private AlbumDetailAdapter mAdapter;
      private List<MusicInfo> musicInfos = new ArrayList<>();
      private long albumID = -1;
      private RecyclerView recyclerView;
      private LinearLayoutManager layoutManager;
      private RecyclerView.ItemDecoration itemDecoration;
  
      public static AlbumDetailFragment newInstance(long id, boolean useTransition, String transitionName) {
          AlbumDetailFragment fragment = new AlbumDetailFragment();
          Bundle args = new Bundle();
          args.putLong("album_id", id);
          args.putBoolean("transition", useTransition);
          if (useTransition)
              args.putString("transition_name", transitionName);
          fragment.setArguments(args);
          return fragment;
      }
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          if (getArguments() != null) {
              albumID = getArguments().getLong("album_id");
          }
  
      }
  
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
          View view = inflater.inflate(R.layout.fragment_common, container, false);
  
  
          recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
          layoutManager = new LinearLayoutManager(mContext);
          recyclerView.setLayoutManager(layoutManager);
          mAdapter = new AlbumDetailAdapter(null);
          recyclerView.setAdapter(mAdapter);
          itemDecoration = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL_LIST);
          recyclerView.addItemDecoration(itemDecoration);
          recyclerView.setHasFixedSize(true);
          reloadAdapter();
  
          AlbumInfo albumInfo = MusicUtils.getAlbumInfo(mContext, albumID);
          Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
          toolbar.setPadding(0, CommonUtils.getStatusHeight(mContext), 0, 0);
          ((AppCompatActivity) mContext).setSupportActionBar(toolbar);
          ab = ((AppCompatActivity) mContext).getSupportActionBar();
          ab.setHomeAsUpIndicator(R.drawable.actionbar_back);
          ab.setDisplayHomeAsUpEnabled(true);
          ab.setTitle(albumInfo.album_name);
          toolbar.setNavigationOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  if(getActivity() != null)
                  getActivity().onBackPressed();
              }
          });
  
          return view;
  
      }
  
      @Override
      public void onPause() {
          super.onPause();
      }
  
  
      //更新adapter界面
      public void reloadAdapter() {
          new AsyncTask<Void, Void, Void>() {
              @Override
              protected Void doInBackground(final Void... unused) {
                  List<MusicInfo> albumList = MusicUtils.queryMusic(mContext, albumID + "", IConstants.START_FROM_ALBUM);
                  mAdapter.updateDataSet((ArrayList) albumList);
                  return null;
              }
  
              @Override
              protected void onPostExecute(Void aVoid) {
                  mAdapter.notifyDataSetChanged();
              }
          }.execute();
      }
  
      class AlbumDetailAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
          final static int FIRST_ITEM = 0;
          final static int ITEM = 1;
          ArrayList<MusicInfo> mList;
  
          public AlbumDetailAdapter(ArrayList<MusicInfo> musicInfos) {
              mList = musicInfos;
              //list.add(0,null);
          }
  
          //更新adpter的数据
          public void updateDataSet(ArrayList<MusicInfo> list) {
              this.mList = list;
          }
  
          @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 ListItemViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.fragment_musci_common_item, viewGroup, false));
              }
          }
  
          @Override
          public int getItemViewType(int position) {
              return position == FIRST_ITEM ? FIRST_ITEM : ITEM;
          }
  
          @Override
          public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  
              if (holder instanceof CommonItemViewHolder) {
                  ((CommonItemViewHolder) holder).textView.setText("共" + mList.size() + "首");
                  ((CommonItemViewHolder) holder).select.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          Intent intent = new Intent(mContext, SelectActivity.class);
                          intent.putParcelableArrayListExtra("ids", mList);
                          mContext.startActivity(intent);
                      }
                  });
              }
              if (holder instanceof ListItemViewHolder) {
                  MusicInfo musicInfo = mList.get(position - 1);
                  ((ListItemViewHolder) holder).mainTitle.setText(musicInfo.musicName);
                  ((ListItemViewHolder) holder).title.setText(musicInfo.artist);
                  //判断该条目音乐是否在播放
                  if (MusicPlayer.getCurrentAudioId() == musicInfo.songId) {
                      ((ListItemViewHolder) holder).playState.setVisibility(View.VISIBLE);
                      ((ListItemViewHolder) holder).playState.setImageResource(R.drawable.song_play_icon);
                      ((ListItemViewHolder) holder).playState.setImageTintList(R.color.theme_color_primary);
                  } else {
                      ((ListItemViewHolder) holder).playState.setVisibility(View.GONE);
                  }
              }
          }
  
          @Override
          public int getItemCount() {
              return (null != mList ? mList.size() + 1 : 0);
          }
  
  
          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);
              }
  
              //播放专辑
              @Override
              public void onClick(View v) {
                  HandlerUtil.getInstance(mContext).postDelayed(new Runnable() {
                      @Override
                      public void run() {
                          long[] list = new long[mList.size()];
                          HashMap<Long, MusicInfo> infos = new HashMap();
                          for (int i = 0; i < mList.size(); i++) {
                              MusicInfo info = mList.get(i);
                              list[i] = info.songId;
                              info.islocal = true;
                              info.albumData = MusicUtils.getAlbumArtUri(info.albumId) + "";
                              infos.put(list[i], mList.get(i));
                          }
                          MusicPlayer.playAll(infos, list, 0, false);
                      }
                  },70);
              }
  
  
          }
  
          public class ListItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
              //ViewHolder
              ImageView moreOverflow;
              TextView mainTitle, title;
              TintImageView playState;
  
              ListItemViewHolder(View view) {
                  super(view);
                  this.mainTitle = (TextView) view.findViewById(R.id.viewpager_list_toptext);
                  this.title = (TextView) view.findViewById(R.id.viewpager_list_bottom_text);
                  this.playState = (TintImageView) view.findViewById(R.id.play_state);
                  this.moreOverflow = (ImageView) view.findViewById(R.id.viewpager_list_button);
                  view.setOnClickListener(this);
                  //设置弹出菜单
                  moreOverflow.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          MoreFragment moreFragment = new MoreFragment().newInstance(mList.get(getAdapterPosition() - 1), IConstants.MUSICOVERFLOW);
                          moreFragment.show(getFragmentManager(), "music");
                      }
                  });
  
              }
  
              //播放歌曲
              @Override
              public void onClick(View v) {
                  HandlerUtil.getInstance(mContext).postDelayed(new Runnable() {
                      @Override
                      public void run() {
                          long[] list = new long[mList.size()];
                          HashMap<Long, MusicInfo> infos = new HashMap();
                          for (int i = 0; i < mList.size(); i++) {
                              MusicInfo info = mList.get(i);
                              list[i] = info.songId;
                              info.islocal = true;
                              info.albumData = MusicUtils.getAlbumArtUri(info.albumId) + "";
                              infos.put(list[i], mList.get(i));
                          }
                          if (getAdapterPosition() > 0)
                              MusicPlayer.playAll(infos, list, getAdapterPosition() - 1, false);
                      }
                  }, 60);
              }
  
          }
  
  
      }
  
  
  }
  