package com.wm.remusic.fragmentnet; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; 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.FrameLayout; import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.wm.remusic.R; import com.wm.remusic.activity.RankPlaylistActivity; import com.wm.remusic.fragment.AttachFragment; import com.wm.remusic.json.BillboardInfo; import com.wm.remusic.net.BMA; import com.wm.remusic.net.HttpUtil; import java.util.ArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Created by wm on 2016/5/14. */ public class RankingFragment extends AttachFragment { //新歌榜 public static int BILLBOARD_NEW_MUSIC = 1; //原创音乐榜 public static int BILLBOARD_ORIGINAL = 200; //热歌榜 public static int BILLBOARD_HOT_MUSIC = 2; //欧美金曲榜 public static int BILLBOARD_EU_UK = 21; //King榜 public static int BILLBOARD_KING = 100; //华语金曲榜 public static int BILLBOARD_NET_MUSIC = 25; //经典老哥榜 public static int BILLBOARD_CLASSIC_OLD = 22; View view; FrameLayout frameLayout; RecyclerView recyclerView; LinearLayoutManager linearLayoutManager; RankingAdapter rankingAdapter; ArrayList<BillboardInfo> items = new ArrayList<>(); int[] mBillList = new int[]{BILLBOARD_NEW_MUSIC, BILLBOARD_ORIGINAL, BILLBOARD_HOT_MUSIC , BILLBOARD_EU_UK , BILLBOARD_KING, BILLBOARD_NET_MUSIC}; @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { if (view == null) { view = LayoutInflater.from(mContext).inflate(R.layout.ranking, null, false); recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview); linearLayoutManager = new LinearLayoutManager(mContext); recyclerView.setLayoutManager(linearLayoutManager); rankingAdapter = new RankingAdapter(); recyclerView.setAdapter(rankingAdapter); recyclerView.setHasFixedSize(true); loadData(); } } } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.load_framelayout, container, false); frameLayout = (FrameLayout) view.findViewById(R.id.loadframe); View loadView = LayoutInflater.from(mContext).inflate(R.layout.loading, frameLayout, false); frameLayout.addView(loadView); return view; } public class MAsyncTask extends AsyncTask<Integer, Void, Void> { @Override protected Void doInBackground(Integer... params) { JsonArray array = null; try { JsonObject jsonObject = HttpUtil.getResposeJsonObject(BMA.Billboard.billSongList(params[0], 0, 3)); array = jsonObject.get("song_list").getAsJsonArray(); for (int i = 0; i < array.size(); i++) { BillboardInfo billboardInfo = new BillboardInfo(); billboardInfo.title = array.get(i).getAsJsonObject().get("title").toString(); billboardInfo.author = array.get(i).getAsJsonObject().get("author").toString(); billboardInfo.id = array.get(i).getAsJsonObject().get("artist_id").toString(); items.add(billboardInfo); } } catch (NullPointerException e) { e.printStackTrace(); } return null; } } private void loadData() { new MAsyncTask().execute(BILLBOARD_NEW_MUSIC); new MAsyncTask().execute(BILLBOARD_ORIGINAL); new MAsyncTask().execute(BILLBOARD_HOT_MUSIC); new MAsyncTask().execute(BILLBOARD_EU_UK); new MAsyncTask().execute(BILLBOARD_NET_MUSIC); new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { try { JsonObject jsonObject = HttpUtil.getResposeJsonObject(BMA.Billboard.billSongList(BILLBOARD_KING, 0, 3)); JsonArray array = jsonObject.get("song_list").getAsJsonArray(); for (int i = 0; i < array.size(); i++) { BillboardInfo billboardInfo = new BillboardInfo(); billboardInfo.title = array.get(i).getAsJsonObject().get("title").toString(); billboardInfo.author = array.get(i).getAsJsonObject().get("author").toString(); billboardInfo.id = array.get(i).getAsJsonObject().get("artist_id").toString(); items.add(billboardInfo); } } catch (NullPointerException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); rankingAdapter.updateAdapter(items); frameLayout.removeAllViews(); frameLayout.addView(view); } }.execute(); } class RankingAdapter extends RecyclerView.Adapter<RankingAdapter.RankingViewHolder> { ArrayList<BillboardInfo> mList; int[] pic = {R.mipmap.ranklist_first, R.mipmap.ranklist_second, R.mipmap.ranklist_third , R.mipmap.ranklist_fifth, R.mipmap.ranklist_acg, R.mipmap.ranklist_six}; public RankingAdapter() { } public void updateAdapter(ArrayList<BillboardInfo> list) { mList = list; this.notifyDataSetChanged(); } @Override public RankingViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new RankingViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.ranking_recyclerview_adapter, parent, false)); } @Override public void onBindViewHolder(RankingViewHolder holder, int position) { BillboardInfo billboardInfo1 = mList.get(position * 3); BillboardInfo billboardInfo2 = mList.get(position * 3 + 1); BillboardInfo billboardInfo3 = mList.get(position * 3 + 2); holder.textView1.setText(billboardInfo1.title + "-" + billboardInfo1.author); holder.textView2.setText(billboardInfo2.title + "-" + billboardInfo2.author); holder.textView3.setText(billboardInfo3.title + "-" + billboardInfo3.author); holder.draweeView.setImageResource(pic[position]); } @Override public int getItemCount() { return mList == null ? 0 : mList.size() / 3; } class RankingViewHolder extends RecyclerView.ViewHolder { SimpleDraweeView draweeView; TextView textView1, textView2, textView3; public RankingViewHolder(View itemView) { super(itemView); draweeView = (SimpleDraweeView) itemView.findViewById(R.id.item_image); textView1 = (TextView) itemView.findViewById(R.id.rank_first_txt); textView2 = (TextView) itemView.findViewById(R.id.rank_second_txt); textView3 = (TextView) itemView.findViewById(R.id.rank_third_txt); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(getAdapterPosition() > -1){ Intent intent = new Intent(mContext, RankPlaylistActivity.class); intent.putExtra("type",mBillList[getAdapterPosition()]); intent.putExtra("pic",pic[getAdapterPosition()]); mContext.startActivity(intent); } } }); } } } }