package com.lzy.ninegridview.model.news;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.lzy.ninegridview.R;
import com.lzy.ninegridview.callback.NewsCallBack;
import com.lzy.ninegridview.model.news.bean.NewsChannel;
import com.lzy.ninegridview.utils.Urls;
import com.lzy.okhttputils.OkHttpUtils;
import com.lzy.okhttputils.cache.CacheMode;
import com.lzy.widget.tab.PagerSlidingTabStrip;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.lang.reflect.Type;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import okhttp3.Request;
import okhttp3.Response;
public class NewsActivity extends AppCompatActivity {
@Bind(R.id.tab) PagerSlidingTabStrip tab;
@Bind(R.id.viewPager) ViewPager viewPager;
private View emptyView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
ButterKnife.bind(this);
emptyView = View.inflate(this, R.layout.item_empty, null);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
addContentView(emptyView, params);
OkHttpUtils.get(Urls.CHANNEL)//
.tag(this)//
.cacheKey("CHANNEL")//
.cacheMode(CacheMode.FIRST_CACHE_THEN_REQUEST)//
.execute(new NewsCallBack() {
@Override
public void onResponse(boolean isFromCache, String s, Request request, @Nullable Response response) {
try {
emptyView.setVisibility(View.GONE);
JSONArray object = new JSONObject(s).getJSONObject("showapi_res_body").getJSONArray("channelList");
Type channelItemType = new TypeToken<List<NewsChannel>>() {}.getType();
List<NewsChannel> channelItems = new Gson().fromJson(object.toString(), channelItemType);
viewPager.setAdapter(new ChannelAdapter(getSupportFragmentManager(), channelItems));
tab.setViewPager(viewPager);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
private class ChannelAdapter extends FragmentPagerAdapter {
private List<NewsChannel> channelItems;
public ChannelAdapter(FragmentManager fm, List<NewsChannel> channelItems) {
super(fm);
this.channelItems = channelItems;
}
@Override
public CharSequence getPageTitle(int position) {
return channelItems.get(position).getName();
}
@Override
public Fragment getItem(int position) {
NewsFragment fragment = new NewsFragment();
NewsChannel channel = channelItems.get(position);
Bundle bundle = new Bundle();
bundle.putString("channelId", channel.getChannelId());
bundle.putInt("page", 1);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() {
return channelItems.size();
}
}
}