content: package com.wm.remusic.fragmentnet;
  
  import android.content.DialogInterface;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.support.annotation.Nullable;
  import android.support.v4.app.Fragment;
  import android.support.v7.app.AlertDialog;
  import android.support.v7.widget.LinearLayoutManager;
  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.google.gson.JsonObject;
  import com.wm.remusic.MainApplication;
  import com.wm.remusic.R;
  import com.wm.remusic.downmusic.Down;
  import com.wm.remusic.fragment.AttachFragment;
  import com.wm.remusic.info.MusicInfo;
  import com.wm.remusic.json.MusicDetailInfo;
  import com.wm.remusic.json.SearchSongInfo;
  import com.wm.remusic.net.BMA;
  import com.wm.remusic.net.HttpUtil;
  import com.wm.remusic.service.MusicPlayer;
  import com.wm.remusic.widget.DividerItemDecoration;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  
  /**
   * Created by wm on 2016/5/18.
   */
  public class SearchMusicFragment extends AttachFragment {
  
      private MusicAdapter mAdapter;
      private ArrayList<SearchSongInfo> songInfos;
      private RecyclerView recyclerView;
      private LinearLayoutManager layoutManager;
  
  
      public static SearchMusicFragment newInstance(ArrayList<SearchSongInfo> list) {
          SearchMusicFragment fragment = new SearchMusicFragment();
          Bundle bundle = new Bundle();
          bundle.putParcelableArrayList("searchMusic", list);
          fragment.setArguments(bundle);
          return fragment;
      }
  
      @Nullable
      @Override
      public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
          View view = inflater.inflate(R.layout.recylerview, container, false);
          if (getArguments() != null) {
              songInfos = getArguments().getParcelableArrayList("searchMusic");
          }
  
          recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
          layoutManager = new LinearLayoutManager(mContext);
          recyclerView.setLayoutManager(layoutManager);
          mAdapter = new MusicAdapter(songInfos);
          recyclerView.setAdapter(mAdapter);
          recyclerView.setHasFixedSize(true);
          recyclerView.addItemDecoration(new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL_LIST));
  
          return view;
      }
  
  
      public class MusicAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
  
          final static int FIRST_ITEM = 0;
          final static int ITEM = 1;
          private ArrayList<SearchSongInfo> mList;
  
          public MusicAdapter(ArrayList<SearchSongInfo> list) {
  //            if (list == null) {
  //                throw new IllegalArgumentException("model Data must not be null");
  //            }
              mList = list;
          }
  
          //更新adpter的数据
          public void updateDataSet(ArrayList<SearchSongInfo> 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));
  
              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) {
              SearchSongInfo model = mList.get(position);
              if (holder instanceof ListItemViewHolder) {
  
                  ((ListItemViewHolder) holder).mainTitle.setText(model.getTitle());
                  ((ListItemViewHolder) holder).title.setText(model.getAuthor());
  
              }
          }
  
          @Override
          public int getItemCount() {
              return (null != mList ? mList.size() : 0);
          }
  
  
  //        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) {
  //
  //
  //            }
  //
  //        }
  
  
          public class ListItemViewHolder extends RecyclerView.ViewHolder {
              //ViewHolder
              ImageView moreOverflow, playState;
              TextView mainTitle, title;
  
              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 = (ImageView) view.findViewById(R.id.play_state);
                  this.moreOverflow = (ImageView) view.findViewById(R.id.viewpager_list_button);
  
                  moreOverflow.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          final SearchSongInfo model = mList.get(getAdapterPosition());
                          new AlertDialog.Builder(mContext).setTitle("要下载音乐吗").
                                  setPositiveButton(mContext.getString(R.string.sure), new DialogInterface.OnClickListener() {
                                      @Override
                                      public void onClick(DialogInterface dialog, int which) {
                                          Down.downMusic(MainApplication.context, model.getSong_id() + "", model.getTitle(), model.getAuthor());
                                          dialog.dismiss();
                                      }
                                  }).
                                  setNegativeButton(mContext.getString(R.string.cancel), new DialogInterface.OnClickListener() {
                                      @Override
                                      public void onClick(DialogInterface dialog, int which) {
                                          dialog.dismiss();
                                      }
                                  }).show();
                      }
                  });
                  view.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          final SearchSongInfo model = mList.get(getAdapterPosition());
                          new AsyncTask<Void,Void,Void>(){
  
                              @Override
                              protected Void doInBackground(Void... params) {
                                  MusicInfo musicInfo = new MusicInfo();
                                  try {
                                      MusicDetailInfo info = null;
                                      JsonObject jsonObject = HttpUtil.getResposeJsonObject(BMA.Song.songBaseInfo(model.getSong_id()))
                                              .get("result").getAsJsonObject().get("items").getAsJsonArray().get(0).getAsJsonObject();
                                      info = MainApplication.gsonInstance().fromJson(jsonObject, MusicDetailInfo.class);
                                      musicInfo.albumData = info.getPic_small();
                                  } catch (NullPointerException e) {
                                      e.printStackTrace();
                                  }
  
  
                                  musicInfo.songId = Integer.parseInt(model.getSong_id());
                                  musicInfo.musicName = model.getTitle();
                                  musicInfo.artist = model.getAuthor();
                                  musicInfo.islocal = false;
                                  musicInfo.albumName = model.getAlbum_title();
                                  musicInfo.albumId = Integer.parseInt(model.getAlbum_id());
                                  musicInfo.artistId = Integer.parseInt(model.getArtist_id());
                                  musicInfo.lrc = model.getLrclink();
  
                                  HashMap<Long, MusicInfo> infos = new HashMap<Long, MusicInfo>();
                                  long[] list = new long[1];
                                  list[0] = musicInfo.songId;
                                  infos.put(list[0], musicInfo);
                                  MusicPlayer.playAll(infos, list, 0, false);
                                  return null;
                              }
                          }.execute();
                      }
                  });
  
              }
  
  
          }
      }
  
  
  }
  