package com.wm.remusic.fragmentnet;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.bilibili.magicasakura.utils.ThemeUtils;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.wm.remusic.MainApplication;
import com.wm.remusic.R;
import com.wm.remusic.fragment.AttachFragment;
import com.wm.remusic.json.SearchAlbumInfo;
import com.wm.remusic.json.SearchArtistInfo;
import com.wm.remusic.json.SearchSongInfo;
import com.wm.remusic.net.BMA;
import com.wm.remusic.net.HttpUtil;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Created by wm on 2016/4/11.
*/
public class SearchTabPagerFragment extends AttachFragment {
private ViewPager viewPager;
private int page = 0;
String key;
private List searchResults = Collections.emptyList();
FrameLayout frameLayout;
View contentView;
ArrayList<SearchSongInfo> songResults = new ArrayList<>();
ArrayList<SearchArtistInfo> artistResults = new ArrayList<>();
ArrayList<SearchAlbumInfo> albumResults = new ArrayList<>();
public static final SearchTabPagerFragment newInstance(int page, String key) {
SearchTabPagerFragment f = new SearchTabPagerFragment();
Bundle bdl = new Bundle(1);
bdl.putInt("page_number", page);
bdl.putString("key", key);
f.setArguments(bdl);
return f;
}
private void search(final String key) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
JsonObject jsonObject = HttpUtil.getResposeJsonObject(BMA.Search.searchMerge(key, 1, 10)).get("result").getAsJsonObject();
JsonObject songObject = jsonObject.get("song_info").getAsJsonObject();
JsonArray songArray = songObject.get("song_list").getAsJsonArray();
for (JsonElement o : songArray) {
SearchSongInfo songInfo = MainApplication.gsonInstance().fromJson(o, SearchSongInfo.class);
Log.e("songinfo", songInfo.getTitle());
songResults.add(songInfo);
}
JsonObject artistObject = jsonObject.get("artist_info").getAsJsonObject();
JsonArray artistArray = artistObject.get("artist_list").getAsJsonArray();
for (JsonElement o : artistArray) {
SearchArtistInfo artistInfo = MainApplication.gsonInstance().fromJson(o, SearchArtistInfo.class);
artistResults.add(artistInfo);
}
JsonObject albumObject = jsonObject.get("album_info").getAsJsonObject();
JsonArray albumArray = albumObject.get("album_list").getAsJsonArray();
for (JsonElement o : albumArray) {
SearchAlbumInfo albumInfo = MainApplication.gsonInstance().fromJson(o, SearchAlbumInfo.class);
albumResults.add(albumInfo);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
if (mContext == null) {
return;
}
contentView = LayoutInflater.from(mContext).inflate(R.layout.fragment_net_tab, frameLayout, false);
viewPager = (ViewPager) contentView.findViewById(R.id.viewpager);
if (viewPager != null) {
Adapter adapter = new Adapter(getChildFragmentManager());
adapter.addFragment(SearchMusicFragment.newInstance(songResults), "单曲");
adapter.addFragment(SearchArtistFragment.newInstance(artistResults), "歌手");
adapter.addFragment(SearchAlbumFragment.newInstance(albumResults), "专辑");
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(3);
}
TabLayout tabLayout = (TabLayout) contentView.findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
viewPager.setCurrentItem(page);
tabLayout.setTabTextColors(R.color.text_color, ThemeUtils.getThemeColorStateList(mContext, R.color.theme_color_primary).getDefaultColor());
tabLayout.setSelectedTabIndicatorColor(ThemeUtils.getThemeColorStateList(mContext, R.color.theme_color_primary).getDefaultColor());
frameLayout.removeAllViews();
frameLayout.addView(contentView);
}
}.execute();
}
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.load_framelayout, container, false);
frameLayout = (FrameLayout) rootView.findViewById(R.id.loadframe);
View loadview = LayoutInflater.from(mContext).inflate(R.layout.loading, frameLayout, false);
frameLayout.addView(loadview);
if (getArguments() != null) {
key = getArguments().getString("key");
}
search(key);
return rootView;
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onStart() {
super.onStart();
}
static class Adapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
public Adapter(FragmentManager fm) {
super(fm);
}
public void addFragment(Fragment fragment, String title) {
mFragments.add(fragment);
mFragmentTitles.add(title);
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitles.get(position);
}
}
}