package com.weikou.beibeivideo.ui.main;
|
|
import android.os.Bundle;
|
import android.support.v4.widget.SwipeRefreshLayout;
|
import android.view.View;
|
import android.widget.ListView;
|
import android.widget.ProgressBar;
|
|
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.util.RefreshLayout;
|
import com.lcjian.library.util.SingleToast;
|
import com.qq.e.ads.cfg.VideoOption;
|
import com.qq.e.ads.nativ.ADSize;
|
import com.qq.e.ads.nativ.NativeExpressAD;
|
import com.qq.e.ads.nativ.NativeExpressADView;
|
import com.qq.e.comm.util.AdError;
|
import com.umeng.analytics.MobclickAgent;
|
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.entity.VideoInfo;
|
import com.weikou.beibeivideo.ui.MyRetainViewFragment;
|
import com.weikou.beibeivideo.ui.recommend.GuessLikeAdapter;
|
import com.weikou.beibeivideo.util.BeibeiConstant;
|
import com.weikou.beibeivideo.R;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 主页面--猜你喜欢Fragment
|
*/
|
public class GuessLikeFragment extends MyRetainViewFragment {
|
|
public GuessLikeFragment() {
|
super();
|
setName(GuessLikeFragment.class.getName());
|
}
|
|
private List<VideoInfo> mList = new ArrayList<>();
|
private int mCurrentPage = 1;
|
private ListView lv_guess_like;
|
private RefreshLayout rl_guess_like;
|
private GuessLikeAdapter guessLikeAdapter;
|
|
@Override
|
public int getContentResource() {
|
return R.layout.fragment_guess_like;
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
}
|
|
@Override
|
public void onCreateView(View contentView, Bundle savedInstanceState) {
|
rl_guess_like = contentView.findViewById(R.id.rl_guess_like);
|
lv_guess_like = contentView.findViewById(R.id.lv_guess_like);
|
guessLikeAdapter = new GuessLikeAdapter(mList, lv_guess_like.getContext());
|
lv_guess_like.setAdapter(guessLikeAdapter);
|
ProgressBar pb = new ProgressBar(lv_guess_like.getContext());
|
rl_guess_like.setFooter(pb);
|
rl_guess_like.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
@Override
|
public void onRefresh() {
|
mCurrentPage = 1;
|
refreshAd();
|
}
|
});
|
rl_guess_like.setOnLoadListener(new RefreshLayout.OnLoadListener() {
|
@Override
|
public void onLoad() {
|
mCurrentPage++;
|
refreshAd();
|
}
|
});
|
refreshAd();
|
rl_guess_like.setRefreshing(true);
|
}
|
|
// 1.加载广告,先设置加载上下文环境和条件
|
private void refreshAd() {
|
NativeExpressAD nativeExpressAD = new NativeExpressAD(rl_guess_like.getContext(), new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT),
|
BeibeiConstant.GDT_ID, BeibeiConstant.GDT_GUESS_LIKE_NATIVE, new NativeExpressAD.NativeExpressADListener() {
|
@Override
|
public void onADLoaded(List<NativeExpressADView> list) {
|
adList.clear();
|
for (int i = 0; i < list.size(); i++) {
|
VideoInfo info = new VideoInfo();
|
info.setAdView(list.get(i));
|
adList.add(info);
|
}
|
lv_guess_like.post(new Runnable() {
|
@Override
|
public void run() {
|
getData();
|
}
|
});
|
// rl_guess_like.setRefreshing(false);
|
}
|
|
@Override
|
public void onRenderFail(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onRenderSuccess(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADExposure(NativeExpressADView nativeExpressADView) {
|
}
|
|
@Override
|
public void onADClicked(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADClosed(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADLeftApplication(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADOpenOverlay(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onADCloseOverlay(NativeExpressADView nativeExpressADView) {
|
|
}
|
|
@Override
|
public void onNoAD(AdError adError) {
|
lv_guess_like.post(new Runnable() {
|
@Override
|
public void run() {
|
getData();
|
}
|
});
|
}
|
}); // 传入Activity
|
// 注意:如果您在联盟平台上新建原生模板广告位时,选择了支持视频,那么可以进行个性化设置(可选)
|
nativeExpressAD.setVideoOption(new VideoOption.Builder()
|
.setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频
|
.setAutoPlayMuted(true) // 自动播放时为静音
|
.build()); //
|
nativeExpressAD.loadAD(5);
|
}
|
|
List<VideoInfo> adList = new ArrayList<>();//广告列表
|
|
/**
|
* 获取小视频列表
|
*/
|
private void getData() {
|
BeibeiVideoAPI.getGuessLike(lv_guess_like.getContext(),
|
String.valueOf(mCurrentPage),
|
new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode,
|
Header[] headers, JSONObject jsonObject)
|
throws Exception {
|
if (jsonObject.getBoolean("IsPost")) {
|
Gson gson = new GsonBuilder().setFieldNamingPolicy(
|
FieldNamingPolicy.UPPER_CAMEL_CASE)
|
.create();
|
List<VideoInfo> list = gson.fromJson(
|
jsonObject.getJSONObject("Data")
|
.getJSONArray("data").toString(),
|
new TypeToken<List<VideoInfo>>() {
|
}.getType());
|
if (mCurrentPage == 1) {
|
mList.clear();
|
}
|
// 数量小于服务器数量时 才增加分页和添加数据
|
if (mList.size() < jsonObject.getJSONObject(
|
"Data").getInt("count")) {
|
|
if (list.size() > 0) {
|
for (int i = 0; i < 4; i++) {
|
if (list.size() >= 6 * i && adList.size() > i) {
|
if (list.size() == 6 * i) {
|
list.add(adList.get(i));
|
} else {
|
list.add(6 * i, adList.get(i));
|
}
|
}
|
}
|
}
|
mCurrentPage++;
|
mList.addAll(list);
|
if (mList.size() > 0)
|
guessLikeAdapter.notifyDataSetChanged();
|
} else {
|
SingleToast.showToast(rl_guess_like.getContext(), "没有更多了");
|
}
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers,
|
byte[] responseBytes, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseBytes, throwable);
|
}
|
|
@Override
|
public void onFinish() {
|
rl_guess_like.setRefreshing(false);
|
rl_guess_like.setLoading(false);
|
}
|
});
|
}
|
|
}
|