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.FeedVideoFragment; import com.weikou.beibeivideo.ui.main.HomeTabDramaFragment; import com.weikou.beibeivideo.ui.main.KSHorizontalFeedVideoFragment; import com.weikou.beibeivideo.ui.main.KSShortVideoFragment; 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.JsonUtil; 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 final String TAG = "RecommendFragment"; private SwipeRefreshLayout rl_recommend; private RecyclerView rv_recommend; private RecommendNewAdapter mRecommendNewAdapter; private List mHomeTypes; private List 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 if ("shortVideos".equalsIgnoreCase(type.getDataType())) { return new KSHorizontalFeedVideoFragment(); }else if ("dyDrama".equalsIgnoreCase(type.getDataType())) { return new HomeTabDramaFragment(); } 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 synchronized void setAdContent() { //没有广告,添加广告 if (position != 0)//只有推荐才有广告 return; if (mRecommendNewAdapter.getAdCount() == 0) { if (adList != null && adList.size() > 0) { mRecommendNewAdapter.addAdToPosition(adList.get(0), 1); adList.remove(0); } 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(); 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 adList; private synchronized void loadAd() { //有没消耗的广告 if (RecommendFragment.this.adList != null && RecommendFragment.this.adList.size() > 0) { return; } if (position != 0)//只有推荐才有广告 { return; } Log.i(TAG, "请求首页大广告"); try { ExpressAdManager recommendAdManager = new ExpressAdManager(AdUtil.AD_TYPE.csj, context); recommendAdManager.loadRecommendLargeAd(new ExpressAdManager.IAdLoadListener() { @Override public void onSuccess(final List adList) { RecommendFragment.this.adList = new ArrayList<>(); for (ExpressAdContainer ad : adList) { ExpressAdManager.renderAd(getActivity(), ad, new ExpressAdManager.IAdRenderListener() { @Override public void onRenderSuccess(List 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 adList) { } }, new ExpressAdManager.IAdEventListener() { @Override public void closeAd(ExpressAdContainer ad) { mRecommendNewAdapter.removeAd(ad); } }); } } }); } catch (Exception e) { } } private void setHomeAdsData(float ratio) { List 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 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) { List homeTypes = JsonUtil.videoGson.fromJson( snapshot.getString(0), new TypeToken>() { }.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(); } @Override public void onPause() { super.onPause(); mChangeHelper.unregisterReceiver(); } 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")) { JSONObject data = jsonObject .getJSONObject("Data"); List homeAds = JsonUtil.videoGson.fromJson(data.getJSONArray("data") .toString(), new TypeToken>() { }.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")) { List homeTypes = new ArrayList(); 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(JsonUtil.videoGson.fromJson(obj.optJSONObject("Ad").toString(), HomeType.HomeTypeAd.class)); JSONArray homeArray = obj .optJSONArray("HomeVideoList"); List homeList = new ArrayList(); if (homeArray != null && homeArray.length() > 0) { for (int j = 0; j < homeArray.length(); j++) { homeList.add(JsonUtil.videoGson.fromJson(homeArray .optJSONObject(j).toString(), HomeVideo.class)); } } type.setHomeVideoList(homeList); JSONArray itemArray = obj .optJSONArray("ItemTypeList"); List itemList = new ArrayList(); if (itemArray != null && itemArray.length() > 0) { for (int k = 0; k < itemArray.length(); k++) { if (itemArray.optJSONObject(k) != null) { itemList.add(JsonUtil.videoGson.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 adList1 = new ArrayList<>(); List 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(); List hotStarList = JsonUtil.videoGson.fromJson( jsonObject.getJSONObject("Data") .getJSONArray("data").toString(), new TypeToken>() { }.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() { } }); } }