package com.weikou.beibeivideo.ui.baidu;
|
|
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.FragmentStatePagerAdapter;
|
import android.support.v4.view.ViewPager;
|
import android.view.View;
|
import android.widget.Toast;
|
|
import com.androidquery.AQuery;
|
import com.google.gson.Gson;
|
import com.google.gson.reflect.TypeToken;
|
import com.lcjian.library.RetainViewFragment;
|
import com.viewpagerindicator.FoundTabPageIndicator;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.BeibeiVideoApplication;
|
import com.weikou.beibeivideo.ui.MyRetainViewFragment;
|
import com.weikou.beibeivideo.util.cache.DiskLruCacheManager;
|
import com.weikou.beibeivideo.util.downutil.StringUtils;
|
import com.yeshi.ec.library_baiducpu.R;
|
import com.yeshi.ec.library_baiducpu.entity.BaiDuCPUType;
|
import com.yeshi.ec.library_baiducpu.fragment.BaiDuCPUContentFragment;
|
import com.yeshi.ec.library_baiducpu.fragment.BaiDuShortVideosFragment;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 百度资讯
|
*/
|
public class BaiDuVideosFragment extends MyRetainViewFragment {
|
|
private ViewPager viewPager;
|
private ContentAdapter contentAdapter;
|
private List<BaiDuCPUType> itemList = new ArrayList<>();
|
private FoundTabPageIndicator indicator;
|
private AQuery mAQuery;
|
|
public static BaiDuVideosFragment newInstance() {
|
return new BaiDuVideosFragment("百度视频");
|
}
|
|
public BaiDuVideosFragment(String name) {
|
super(name);
|
}
|
|
|
@Override
|
public int getContentResource() {
|
return R.layout.fragment_baidu_news_root;
|
}
|
|
private void initView(View contentView) {
|
viewPager = contentView.findViewById(R.id.vp_news);
|
}
|
|
private String getCacheKey() {
|
return StringUtils.MD5("getBaiDuNewsTypeList");
|
}
|
|
private void initData(View contentView) {
|
mAQuery = new AQuery(contentView);
|
//获取缓存
|
String value = DiskLruCacheManager.getInstance(BeibeiVideoApplication.application).getCache(getCacheKey());
|
if (!StringUtils.isNullOrEmpty(value)) {
|
setData(value);
|
}
|
}
|
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
initView(contentView);
|
initData(contentView);
|
getTypeList();
|
}
|
|
|
/**
|
* 获取类型列表
|
*/
|
private void getTypeList() {
|
BeibeiVideoAPI.getBaiDuVideoTypeList(getContext(), new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optBoolean("IsPost")) {
|
String data = jsonObject.optJSONArray("Data").toString();
|
setData(data);
|
DiskLruCacheManager.getInstance(BeibeiVideoApplication.application).cache(getCacheKey(), data);
|
} else {
|
Toast.makeText(getContext(), jsonObject.optString("Msg"), Toast.LENGTH_SHORT).show();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
}
|
});
|
}
|
|
private synchronized void setData(String data) {
|
List<BaiDuCPUType> list = new Gson().fromJson(data, new TypeToken<List<BaiDuCPUType>>() {
|
}.getType());
|
//数据一致就不必更新
|
if (itemList != null) {
|
String data1 = new Gson().toJson(itemList);
|
String data2 = new Gson().toJson(list);
|
if (data1.equalsIgnoreCase(data2)) {
|
return;
|
}
|
}
|
itemList.clear();
|
itemList.addAll(list);
|
setData();
|
}
|
|
|
public void setData() {
|
contentAdapter = new BaiDuVideosFragment.ContentAdapter(
|
getChildFragmentManager(), itemList);
|
viewPager.setAdapter(contentAdapter);
|
((FoundTabPageIndicator) mAQuery.id(R.id.indicator).getView()).setViewPager(viewPager);
|
}
|
|
class ContentAdapter extends FragmentStatePagerAdapter {
|
private FragmentManager fm;
|
|
private List<BaiDuCPUType> mlist;
|
|
public ContentAdapter(FragmentManager fm, List<BaiDuCPUType> list) {
|
super(fm);
|
this.fm = fm;
|
this.mlist = list;
|
}
|
|
@Override
|
public Fragment getItem(int position) {
|
if (mlist.get(position).getId() == 1085)
|
return BaiDuShortVideosFragment.newInstance(mlist.get(position));
|
else
|
return BaiDuCPUContentFragment.newInstance(mlist.get(position), mlist.get(position).getId() == 1085 ? BaiDuCPUContentFragment.VIEW_TYPE_SMALLVIDEO : BaiDuCPUContentFragment.VIEW_TYPE_VIDEO);
|
}
|
|
@Override
|
public int getCount() {
|
return mlist.size();
|
}
|
|
|
@Nullable
|
@Override
|
public CharSequence getPageTitle(int position) {
|
return mlist.get(position).getName();
|
}
|
}
|
|
}
|