package com.weikou.beibeivideo.ui.recommend;
|
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.os.Bundle;
|
import android.provider.Settings;
|
|
import androidx.fragment.app.Fragment;
|
import androidx.viewpager.widget.ViewPager;
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.ViewGroup;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import com.bumptech.glide.Glide;
|
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.lcjian.library.RetainViewFragment;
|
import com.lcjian.library.content.ConnectivityChangeHelper;
|
import com.lcjian.library.content.ConnectivityChangeHelper.OnConnectivityChangeListener;
|
import com.lcjian.library.util.ScreenUtils;
|
import com.lcjian.library.util.SystemCommon;
|
import com.lcjian.library.util.cache.DiskLruCache;
|
import com.lcjian.library.util.common.StorageUtils;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.lcjian.library.widget.RatioLayout;
|
import com.lzj.gallery.library.views.BannerViewPager;
|
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
|
import com.umeng.analytics.MobclickAgent;
|
import com.viewpagerindicator.CirclePageIndicator;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.R;
|
import com.weikou.beibeivideo.entity.HomeAd;
|
import com.weikou.beibeivideo.entity.HomeType;
|
import com.weikou.beibeivideo.entity.HomeTypeItem;
|
import com.weikou.beibeivideo.entity.HomeVideo;
|
import com.weikou.beibeivideo.entity.JumpDetail;
|
import com.weikou.beibeivideo.entity.VideoInfo;
|
import com.weikou.beibeivideo.entity.VideoType;
|
import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
|
import com.weikou.beibeivideo.entity.recommend.HomeClass;
|
import com.weikou.beibeivideo.ui.category.bean.HotStar;
|
import com.weikou.beibeivideo.ui.main.MainActivity;
|
import com.weikou.beibeivideo.ui.media.VideoDetailActivity;
|
import com.weikou.beibeivideo.ui.mine.BrowserActivity;
|
import com.weikou.beibeivideo.util.BeibeiConstant;
|
import com.weikou.beibeivideo.util.CustomShareDialog;
|
import com.weikou.beibeivideo.util.DimenUtils;
|
import com.weikou.beibeivideo.util.JumpActivityUtil;
|
import com.weikou.beibeivideo.util.ad.AdUtil;
|
import com.weikou.beibeivideo.util.ad.ExpressAdManager;
|
import com.weikou.beibeivideo.util.ad.HomeAdUtil;
|
import com.weikou.beibeivideo.util.ui.DividerItemDecoration;
|
import com.yeshi.appupdate.GoReview;
|
import com.yeshi.appupdate.service.DownLoadFileService;
|
|
import org.apache.http.Header;
|
import org.json.JSONArray;
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.Iterator;
|
import java.util.List;
|
|
public class RecommendFragment extends RetainViewFragment implements
|
OnClickListener {
|
|
private SwipeRefreshLayout rl_recommend;
|
|
private RecyclerView rv_recommend;
|
|
private RecommendNewAdapter mRecommendNewAdapter;
|
|
private List mHomeTypes;
|
|
private List<HomeAd> mHomeAds;
|
|
private DiskLruCache cache;
|
|
private ConnectivityChangeHelper mChangeHelper;
|
|
private TextView tv_no_network;
|
|
private TextView tv_notice;
|
|
private HomeClass type;
|
|
private int position;
|
|
private ImageView iv_right_ad;
|
private ImageView iv_right_ad_close;
|
private LinearLayout ll_right_ad;
|
|
private boolean isBottom = false;
|
|
boolean isReview;
|
|
private Context context;
|
|
public static Fragment newInstance(HomeClass type, String position) {
|
if ("recommend".equalsIgnoreCase(type.getDataType())) {
|
RecommendFragment fragment = new RecommendFragment();
|
Bundle bundle = new Bundle();
|
bundle.putSerializable("videotype", type);
|
bundle.putInt("position", Integer.parseInt(position));
|
fragment.setArguments(bundle);
|
return fragment;
|
} else {
|
CategoryRecommendFragment fragment = new CategoryRecommendFragment();
|
Bundle bundle = new Bundle();
|
bundle.putSerializable("videotype", type);
|
bundle.putString("id", type.getId());
|
bundle.putInt("position", Integer.parseInt(position));
|
fragment.setArguments(bundle);
|
return fragment;
|
}
|
}
|
|
@Override
|
public void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
context = getActivity().getApplicationContext();
|
try {
|
cache = DiskLruCache.open(
|
new File(StorageUtils.getCacheDirectory(context)
|
.toString(), "http"), getVersionNum(context),
|
1, 1024 * 1024);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
|
}
|
|
@Override
|
public void onSaveInstanceState(Bundle outState) {
|
outState.putString("flash back", "show");
|
super.onSaveInstanceState(outState);
|
}
|
|
public static int getVersionNum(Context context) {
|
try {
|
PackageInfo pi = context.getPackageManager().getPackageInfo(
|
context.getPackageName(), 0);
|
return pi.versionCode;
|
} catch (NameNotFoundException e) {
|
e.printStackTrace();
|
return 1;
|
}
|
}
|
|
@Override
|
public int getContentResource() {
|
return R.layout.recommend_fragment;
|
}
|
|
private String getDay(long time) {
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
String date = format.format(new Date(time));
|
return date;
|
}
|
|
|
//填充数据
|
private void setAdContent() {
|
//没有广告,添加广告
|
if (position != 0)//只有推荐才有广告
|
return;
|
if (mRecommendNewAdapter.getAdCount() == 0) {
|
if (adList != null && adList.size() > 0) {
|
mRecommendNewAdapter.addAdToPosition(adList.get(0), 3);
|
}
|
mRecommendNewAdapter.notifyDataSetChanged();
|
}
|
}
|
|
private BannerViewPager vp_recommend;
|
private LinearLayout ll_ad_containner;
|
private RatioLayout rl_recommend_top;
|
private boolean isLoad;
|
private View loading;
|
private View noMoreDataView;
|
|
private void initHomeAd() {
|
View view = LayoutInflater.from(getContext()).inflate(R.layout.recommend_top, null);
|
vp_recommend = view.findViewById(R.id.vp_recommend);
|
ll_ad_containner = view.findViewById(R.id.ll_ad_containner);
|
rl_recommend_top = view.findViewById(R.id.rl_recommend_top);
|
mRecommendNewAdapter.setHeaderView(view);
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
tv_no_network = contentView.findViewById(R.id.tv_no_network);
|
tv_no_network.setOnClickListener(this);
|
// 公告
|
tv_notice = contentView.findViewById(R.id.include_notice);
|
mChangeHelper = new ConnectivityChangeHelper(context,
|
new OnConnectivityChangeListener() {
|
@Override
|
public void onNetworkUnAvailable() {
|
if (!StringUtils.isBlank(content)) {
|
tv_notice.setVisibility(View.VISIBLE);
|
} else {
|
tv_notice.setVisibility(View.GONE);
|
}
|
tv_no_network.setVisibility(View.VISIBLE);
|
}
|
|
@Override
|
public void onWiFiAvailable() {
|
if (!StringUtils.isBlank(content)) {
|
tv_notice.setVisibility(View.VISIBLE);
|
} else {
|
tv_notice.setVisibility(View.GONE);
|
}
|
tv_no_network.setVisibility(View.GONE);
|
}
|
|
@Override
|
public void onMobileAvailable() {
|
if (!StringUtils.isBlank(content)) {
|
tv_notice.setVisibility(View.VISIBLE);
|
} else {
|
tv_notice.setVisibility(View.GONE);
|
}
|
tv_no_network.setVisibility(View.GONE);
|
}
|
});
|
|
int width = (int) SystemCommon.getScreenWidth(context);
|
|
rl_recommend = contentView.findViewById(R.id.rl_recommend);
|
rv_recommend = contentView
|
.findViewById(R.id.rv_recommend);
|
|
rv_recommend.setLayoutManager(new LinearLayoutManager(context));
|
DividerItemDecoration decoration = new DividerItemDecoration();
|
decoration.setSize(DimenUtils.dip2px(rv_recommend.getContext(), 0));
|
rv_recommend.addItemDecoration(decoration);
|
|
loading = LayoutInflater.from(getContext()).inflate(R.layout.item_loading, null);
|
loading.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
loading.setVisibility(View.GONE);
|
|
noMoreDataView = LayoutInflater.from(getContext()).inflate(R.layout.item_no_more_data_view, null);
|
noMoreDataView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
|
|
rv_recommend.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
@Override
|
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
super.onScrollStateChanged(recyclerView, newState);
|
LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
|
int first = manager.findFirstVisibleItemPosition();
|
int last = manager.findLastVisibleItemPosition();
|
int total = manager.getItemCount();
|
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
|
|
if ((!isLoad) && last == total - 1) {
|
int nowHomeTypeCount = 0;
|
if (mHomeTypes != null)
|
for (Object object : mHomeTypes) {
|
if (object instanceof HomeType) {
|
nowHomeTypeCount++;
|
}
|
}
|
if (nowHomeTypeCount < homeTypeCount) {
|
if (mHomeTypes != null && mHomeTypes.size() > 0 && !rl_recommend.isRefreshing()) {//列表中有数据才能加载更多
|
homeTypePage++;
|
isLoad = true;
|
loading.setVisibility(View.VISIBLE);
|
getHomeType(homeTypePage);
|
}
|
}
|
}
|
}
|
}
|
|
@Override
|
public void onScrolled(RecyclerView recyclerView, int dx, final int dy) {
|
super.onScrolled(recyclerView, dx, dy);
|
}
|
});
|
|
|
rl_recommend.setClickable(false);
|
|
iv_right_ad = contentView.findViewById(R.id.iv_right_ad);
|
iv_right_ad_close = contentView.findViewById(R.id.iv_right_ad_close);
|
ll_right_ad = contentView.findViewById(R.id.ll_right_ad);
|
|
type = (HomeClass) getArguments().getSerializable("videotype");
|
position = (Integer) getArguments().get("position");
|
|
|
isReview = GoReview.getGoReview(context, BeibeiConstant.GO_REVIEW_KEY);
|
|
|
mHomeTypes = new ArrayList<HomeType>();
|
mHomeAds = new ArrayList<>();
|
|
iv_right_ad_close.setOnClickListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (ll_right_ad != null) {
|
ll_right_ad.setVisibility(View.GONE);
|
MainActivity.showRecommendRightAd = false;
|
}
|
}
|
});
|
|
rl_recommend.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
|
//加载广告
|
loadAd();
|
getHomeAd();
|
Log.i("mResult", "onCreate---setOnRefreshListener---loadAD1");
|
}
|
});
|
|
if (mHomeTypes == null)
|
mHomeTypes = new ArrayList();
|
mRecommendNewAdapter = new RecommendNewAdapter(getActivity(), mHomeTypes, ScreenUtils.getScreenWidth(getContext()));
|
rv_recommend.setAdapter(mRecommendNewAdapter);
|
|
mRecommendNewAdapter.setFooterView(loading);
|
setAdContent();
|
initHomeAd();
|
//加载缓存数据
|
// loadCacheData();
|
rv_recommend.postDelayed(new Runnable() {
|
|
@Override
|
public void run() {
|
if (getActivity() != null) {
|
rl_recommend.setRefreshing(true);
|
getHomeAd();
|
Log.i("mResult", "onCreate---postDelayed---loadAD1");
|
}
|
}
|
}, 500);
|
|
//加载广告
|
loadAd();
|
|
getNotice();
|
if (position == 0) {
|
getAdRecommendRight();
|
}
|
loadCacheData();
|
}
|
|
private List<ExpressAdContainer> adList;
|
|
private void loadAd() {
|
try {
|
ExpressAdManager recommendAdManager = new ExpressAdManager(AdUtil.AD_TYPE.csj, context);
|
recommendAdManager.loadRecommendLargeAd(new ExpressAdManager.IAdLoadListener() {
|
@Override
|
public void onSuccess(final List<ExpressAdContainer> adList) {
|
RecommendFragment.this.adList = new ArrayList<>();
|
for (ExpressAdContainer ad : adList) {
|
ExpressAdManager.renderAd(getActivity(), ad, new ExpressAdManager.IAdRenderListener() {
|
@Override
|
public void onRenderSuccess(List<ExpressAdContainer> adList1) {
|
RecommendFragment.this.adList.add(adList1.get(0));
|
if (RecommendFragment.this.adList.size() == adList.size()) {
|
if (mRecommendNewAdapter.getAdCount() == 0 && mHomeTypes.size() > 0) {//没有填充广告
|
setAdContent();
|
}
|
}
|
}
|
|
@Override
|
public void onRenderFail(List<ExpressAdContainer> adList) {
|
|
}
|
}, new ExpressAdManager.IAdEventListener() {
|
@Override
|
public void closeAd(ExpressAdContainer ad) {
|
mRecommendNewAdapter.removeAd(ad);
|
}
|
});
|
}
|
}
|
});
|
} catch (Exception e) {
|
|
}
|
}
|
|
|
private void setHomeAdsData(float ratio) {
|
List<String> urlList = new ArrayList<>();
|
for (HomeAd ad : mHomeAds)
|
urlList.add(ad.getPicture());
|
|
|
if (!vp_recommend.hasAdapter()) {
|
vp_recommend.initBanner(urlList, false, ratio)//开启3D画廊效果
|
.addPageMargin((int) (DimenUtils.dip2px(getContext(), 1) * 1.5), DimenUtils.dip2px(getContext(), 3))//参数1page之间的间距,参数2中间item距离边界的间距
|
// .addPointMargin(5)//指示器点间距
|
.addStartTimer(3)//自动轮播3秒间隔
|
// .addPointBottom(0)//底部间距
|
.addDefaultImg(R.drawable.shape_video_list_cover_placeholder)
|
.addRoundCorners(DimenUtils.dip2px(getContext(), 8))//圆角
|
.finishConfig()//这句必须加
|
.addBannerListener(new BannerViewPager.OnClickBannerListener() {
|
@Override
|
public void onBannerClick(int position) {
|
if (position >= mHomeAds.size())
|
return;
|
HomeAdUtil.jump(mHomeAds.get(position), getActivity());
|
}
|
});
|
} else {
|
vp_recommend.notifyDataSetChanged();
|
}
|
}
|
|
|
private void loadCacheData() {
|
if (cache != null && position == 0) {
|
{
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
snapshot = cache.get(getKey("getHomeAdNew") + type.getId());
|
if (snapshot != null) {
|
List<HomeAd> adList = new ArrayList<>();
|
String str = snapshot.getString(0);
|
try {
|
JSONObject jsonObject = new JSONObject(str);
|
String bannerRate = jsonObject.optString("bannerSizeRate");
|
JSONArray array = jsonObject.optJSONArray("data");
|
HomeAd ad;
|
for (int i = 0; i < array.length(); i++) {
|
ad = new HomeAd();
|
ad.setId(array.optJSONObject(i).optString("Id"));
|
ad.setPicture(array.optJSONObject(i).optString(
|
"Picture"));
|
ad.setTitle(array.optJSONObject(i).optString(
|
"Title"));
|
ad.setClazz(array.optJSONObject(i).optString(
|
"Clazz"));
|
ad.setParams(array.optJSONObject(i).optString(
|
"Params"));
|
ad.setLinkType(Integer
|
.parseInt(array.optJSONObject(i)
|
.optString("LinkType")));
|
VideoInfo videoInfo = new VideoInfo();
|
videoInfo
|
.setId(array.optJSONObject(i)
|
.optJSONObject("Video")
|
.optString("Id"));
|
videoInfo.setShare(array.optJSONObject(i)
|
.optJSONObject("Video")
|
.optString("Share"));
|
videoInfo.setThirdType(array.optJSONObject(i)
|
.optJSONObject("Video")
|
.optString("ThirdType"));
|
ad.setVideo(videoInfo);
|
adList.add(ad);
|
|
}
|
if (adList != null && adList.size() > 0) {
|
mHomeAds.clear();
|
mHomeAds.addAll(adList);
|
setHomeAdsData(StringUtils.isBlank(bannerRate) ? 0.4375f : new BigDecimal(bannerRate).floatValue());
|
}
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
}
|
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
snapshot = cache.get(getKey("getHomeType") + type.getId());
|
if (snapshot != null) {
|
Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE).create();
|
List<HomeType> homeTypes = gson.fromJson(
|
snapshot.getString(0),
|
new TypeToken<List<HomeType>>() {
|
}.getType());
|
mHomeTypes.clear();
|
if (homeTypes != null) {
|
mHomeTypes.addAll(homeTypes);
|
// mRecommendNewAdapter.notifyDataSetChanged();
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
|
}
|
|
}
|
|
|
private void getAdRecommendRight() {
|
BeibeiVideoAPI.getAdRecommendRight(context, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
if (position == 0) {
|
String img = jsonObject.optJSONObject("Data").optString("img");
|
String mstatus = jsonObject.optJSONObject("Data").optString("mstatus");
|
final String linkType = jsonObject.optJSONObject("Data").optString("linkType");
|
final String webLink = jsonObject.optJSONObject("Data").optString("webLink");
|
final String downloadLink = jsonObject.optJSONObject("Data").optString("downloadLink");
|
Glide.with(context).load(img).into(iv_right_ad);
|
if (mstatus.equalsIgnoreCase("0")) {
|
ll_right_ad.setVisibility(View.GONE);
|
} else {
|
if (MainActivity.showRecommendRightAd)
|
ll_right_ad.setVisibility(View.VISIBLE);
|
}
|
|
|
iv_right_ad.setOnClickListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (linkType.equalsIgnoreCase("0")) {
|
Intent intent = new Intent(context, BrowserActivity.class);
|
intent.putExtra("url", webLink);
|
startActivity(intent);
|
} else {
|
try {
|
Intent intent = new Intent(context,
|
DownLoadFileService.class);
|
context.stopService(intent);
|
} catch (Exception e) {
|
}
|
try {
|
Bundle bundle = new Bundle();
|
bundle.putString("downloadurl",
|
downloadLink);
|
Intent intent = new Intent(context,
|
DownLoadFileService.class);
|
intent.putExtras(bundle);
|
context.startService(intent);
|
} catch (Exception e) {
|
}
|
}
|
}
|
});
|
} else {
|
ll_right_ad.setVisibility(View.GONE);
|
}
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable
|
throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
}
|
});
|
}
|
|
private String getKey(String method) {
|
return new Md5FileNameGenerator().generate(method);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
mChangeHelper.registerReceiver();
|
MobclickAgent.onPageStart("主页面—推荐");
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
mChangeHelper.unregisterReceiver();
|
MobclickAgent.onPageEnd("主页面—推荐");
|
}
|
|
private String content;
|
|
private void getNotice() {
|
SharedPreferences preferences = context.getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
BeibeiVideoAPI.getNotice(context, uid,
|
new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
JSONObject obj = jsonObject.optJSONObject("Data");
|
content = obj.optString("Content");
|
JSONObject jumpDetailJson = obj.optJSONObject("jumpDetail");
|
JumpDetail jumpDetail = null;
|
if (jumpDetailJson != null) {
|
jumpDetail = new Gson().fromJson(jumpDetailJson.toString(), JumpDetail.class);
|
}
|
JSONObject paramsJson = obj.optJSONObject("Params");
|
com.alibaba.fastjson.JSONObject params = null;
|
if (paramsJson != null)
|
params = com.alibaba.fastjson.JSONObject.parseObject(paramsJson.toString());
|
|
|
final JumpDetail fJumpDetail = jumpDetail;
|
final com.alibaba.fastjson.JSONObject fParams = params;
|
|
// 0-不显示
|
// 1-显示
|
final String url = obj.optString("Url");
|
if (position > 0)//只有第一页才显示通知
|
content = null;
|
if (!StringUtils.isBlank(content)) {
|
tv_notice.setVisibility(View.VISIBLE);
|
tv_notice.setText(content);
|
if (!StringUtils.isBlank(url)) {
|
tv_notice
|
.setOnClickListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
JumpActivityUtil.jumpPage(getActivity(), fJumpDetail, fParams);
|
}
|
});
|
}
|
} else {
|
tv_notice.setVisibility(View.GONE);
|
}
|
|
}
|
}
|
});
|
}
|
|
private void getHomeAd() {
|
SharedPreferences preferences = context.getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
BeibeiVideoAPI.getHomeAd(context, uid, type.getId(), type.getDataKey(),
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
Gson gson = new GsonBuilder()
|
.setPrettyPrinting()
|
.setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
JSONObject data = jsonObject
|
.getJSONObject("Data");
|
List<HomeAd> homeAds = gson.fromJson(data.getJSONArray("data")
|
.toString(), new TypeToken<List<HomeAd>>() {
|
}.getType());
|
//获取banner比例
|
String bannerSizeRate = data.optString("bannerSizeRate");
|
if (!StringUtils.isEmpty(bannerSizeRate)) {
|
rl_recommend_top.setRatio(new BigDecimal(bannerSizeRate).floatValue());
|
}
|
if (homeAds != null) {
|
mHomeAds.clear();
|
mHomeAds.addAll(homeAds);
|
}
|
|
setHomeAdsData(new BigDecimal(bannerSizeRate).floatValue());
|
|
|
if (position == 0) {
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getHomeAdNew") + type.getId());
|
editor.set(0, jsonObject.getJSONObject("Data").toString());
|
editor.commit();
|
}
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
homeTypePage = 1;
|
getHomeType(homeTypePage);
|
}
|
});
|
}
|
|
/**
|
* 获取影片整体信息
|
*/
|
|
private int homeTypePage;
|
private int homeTypeCount;
|
|
private void getHomeType(int page) {
|
SharedPreferences preferences = context.getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
BeibeiVideoAPI.getHomeType(context, uid, type.getId(), type.getDataKey(), page, 4,
|
new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
Gson gson = new GsonBuilder().setVersion(1.0).setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
List<HomeType> homeTypes = new ArrayList<HomeType>();
|
JSONArray array = jsonObject.getJSONObject("Data")
|
.getJSONArray("data");
|
homeTypeCount = jsonObject.getJSONObject("Data").optInt("count");
|
for (int i = 0; i < array.length(); i++) {
|
HomeType type = new HomeType();
|
JSONObject obj = array.optJSONObject(i);
|
type.setColumns(obj.optInt("Columns"));
|
type.setId(obj.optString("Id"));
|
type.setName(obj.optString("Name"));
|
type.setHasMore(obj.optString("HasMore"));
|
type.setActivity(obj.optString("Activity"));
|
type.setParams(obj.optString("Params"));
|
type.setIcon(obj.optString("Icon"));
|
type.setNeedAd(obj.optBoolean("NeedAd", false));
|
type.setRefreshPosition(obj.optInt("RefreshPosition", 0));
|
type.setMoreTag(obj.optString("MoreTag"));
|
type.setCount(obj.optInt("Count"));
|
type.setNumber(obj.optInt("Number"));
|
type.setCurrentPage(1);
|
|
|
if (obj.optJSONObject("Ad") != null)
|
type.setAd(gson.fromJson(obj.optJSONObject("Ad").toString(), HomeType.HomeTypeAd.class));
|
|
JSONArray homeArray = obj
|
.optJSONArray("HomeVideoList");
|
List<HomeVideo> homeList = new ArrayList<HomeVideo>();
|
if (homeArray != null && homeArray.length() > 0) {
|
for (int j = 0; j < homeArray.length(); j++) {
|
|
homeList.add(gson.fromJson(homeArray
|
.optJSONObject(j).toString(),
|
HomeVideo.class));
|
}
|
}
|
|
|
type.setHomeVideoList(homeList);
|
JSONArray itemArray = obj
|
.optJSONArray("ItemTypeList");
|
List<HomeTypeItem> itemList = new ArrayList<HomeTypeItem>();
|
if (itemArray != null && itemArray.length() > 0) {
|
for (int k = 0; k < itemArray.length(); k++) {
|
if (itemArray.optJSONObject(k) != null) {
|
itemList.add(gson.fromJson(
|
itemArray.optJSONObject(k)
|
.toString(),
|
HomeTypeItem.class));
|
}
|
}
|
}
|
type.setItemTypeList(itemList);
|
if (!type.getName().equalsIgnoreCase("美女"))
|
homeTypes.add(type);
|
}
|
|
//清除老数据
|
if (page == 1) {
|
mHomeTypes.clear();
|
mRecommendNewAdapter.removeAllAd();
|
}
|
mHomeTypes.addAll(homeTypes);
|
//填充数据
|
setAdContent();
|
if (position == 0 && page == 1) {
|
DiskLruCache.Editor editor = cache
|
.edit(getKey("getHomeType") + type.getId());
|
editor.set(0, jsonObject.getJSONObject("Data")
|
.getJSONArray("data").toString());
|
editor.commit();
|
}
|
//刷新
|
if (page == 1) {
|
mRecommendNewAdapter.setFooterView(loading);
|
}
|
|
if (mHomeTypes.size() >= homeTypeCount) {
|
mRecommendNewAdapter.removeFooterView();
|
}
|
mRecommendNewAdapter.notifyDataSetChanged();
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
isLoad = false;
|
rl_recommend.setRefreshing(false);
|
loading.setVisibility(View.GONE);
|
try {
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
byte[] responseBytes, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseBytes,
|
throwable);
|
}
|
});
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_no_network: {
|
Intent intent = new Intent(Settings.ACTION_SETTINGS);
|
startActivity(intent);
|
}
|
break;
|
default:
|
break;
|
}
|
}
|
|
@Override
|
public void onDestroy() {
|
super.onDestroy();
|
}
|
|
private List<HomeVideo> adList1 = new ArrayList<>();
|
|
|
List<HotStar> hotStars = new ArrayList<>();
|
|
private void getHotStars() {
|
SharedPreferences preferences = context.getSharedPreferences(
|
"user", Context.MODE_PRIVATE);
|
String uid = preferences.getString("uid", "");
|
BeibeiVideoAPI.getRecommendStars(context, uid,
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
hotStars.clear();
|
Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
List<HotStar> hotStarList = gson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONArray("data").toString(),
|
new TypeToken<List<HotStar>>() {
|
}.getType());
|
hotStars.addAll(hotStarList);
|
|
//插入明星列表
|
if (hotStars != null && hotStars.size() > 0) {
|
HomeType homeType = new HomeType();
|
homeType.setName("明星合辑");
|
homeType.setColumns(4);
|
homeType.setHotStars(hotStars);
|
homeType.setActivity("");
|
homeType.setBeizhu("");
|
homeType.setParams("");
|
homeType.setHasMore("true");
|
homeType.setId("9998");
|
mHomeTypes.add(homeType);
|
mRecommendNewAdapter.notifyDataSetChanged();
|
}
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
byte[] responseBytes, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseBytes, throwable);
|
}
|
|
@Override
|
public void onFinish() {
|
}
|
});
|
}
|
|
}
|