From 2f9e1cb327b1d58e4035b77bd903a452774ce66b Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 17 十月 2020 17:28:57 +0800
Subject: [PATCH] 广告控制完善

---
 BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 105 insertions(+), 12 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java
index 87e5c7b..ef09ead 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java
@@ -62,6 +62,7 @@
 import com.weikou.beibeivideo.ui.video.EpisodeNewAdapter;
 import com.weikou.beibeivideo.util.BeibeiConstant;
 import com.weikou.beibeivideo.util.GlideCircleTransform;
+import com.weikou.beibeivideo.util.UserUtil;
 import com.weikou.beibeivideo.util.VideoUtil;
 import com.weikou.beibeivideo.util.ad.AdUtil;
 import com.weikou.beibeivideo.util.ad.ExpressAdManager;
@@ -71,6 +72,7 @@
 import org.json.JSONArray;
 import org.json.JSONObject;
 
+import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -100,6 +102,12 @@
     private EpisodeNewAdapter episodeAdapter;
 
     final String TAG = "EpisodeFragment";
+
+    private boolean episodeLoading = false;//鍓ч泦鏄惁姝e湪鍔犺浇鏇村
+
+    private boolean episodeHasMore = true;//鏄惁杩樻湁鏇村鐨勫墽闆�
+
+    private int episodePage = 2;//褰撳墠椤�
 
     public static DisplayImageOptions option = new DisplayImageOptions.Builder()
             .showImageForEmptyUri(R.drawable.from_other)
@@ -157,7 +165,7 @@
                                    RecyclerView parent, RecyclerView.State state) {
             int position = parent.getChildAdapterPosition(view);
             outRect.left = space;
-            if (mVideoInfo != null && position == mVideoInfo.getVideoDetailList().size() - 1)
+            if (mVideoInfo != null && position == VideoUtil.videoEpisodeList.size() - 1)
                 outRect.right = space;
         }
     }
@@ -295,10 +303,42 @@
         isCollect();
         loadAD1();
         setFrom(mVideoInfo);
-        if (mVideoInfo.getVideoDetailList() != null && mVideoInfo.getVideoDetailList().size() > 1) {
+        if (VideoUtil.videoEpisodeList != null && VideoUtil.videoEpisodeList.size() > 1) {
             rv_episode.setVisibility(View.VISIBLE);
         } else
             rv_episode.setVisibility(View.GONE);
+
+        //
+        rv_episode.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 (mVideoInfo == null)
+                        return;
+                    if (!episodeLoading && episodeHasMore && last == total - 1) {//鍔犺浇鏇村
+                        VideoResource checkedResource = null;
+                        for (VideoResource vr : mVideoInfo.getResourceList()) {
+                            checkedResource = vr;
+                            break;
+                        }
+                        if (checkedResource != null) {
+                            loadMoreEpisode(mVideoInfo.getId(), checkedResource.getId(), episodePage);
+                        }
+                    }
+                }
+            }
+
+            @Override
+            public void onScrolled(RecyclerView recyclerView, int dx, final int dy) {
+                super.onScrolled(recyclerView, dx, dy);
+            }
+        });
+
 
         EventBus.getDefault().register(this);
     }
@@ -601,7 +641,7 @@
 
     public void onEventMainThread(VideoInfo videoInfo) {
         mVideoInfo = videoInfo;
-        if (mVideoInfo.getVideoDetailList() != null && mVideoInfo.getVideoDetailList().size() > 1) {
+        if (VideoUtil.videoEpisodeList != null && VideoUtil.videoEpisodeList.size() > 1) {
             rv_episode.setVisibility(View.VISIBLE);
         } else
             rv_episode.setVisibility(View.GONE);
@@ -797,6 +837,11 @@
                                                     .toString(),
                                             new TypeToken<VideoInfo>() {
                                             }.getType());
+                            if (videoInfo != null) {
+                                VideoUtil.videoEpisodeList.clear();
+                                if (videoInfo.getVideoDetailList() != null)
+                                    VideoUtil.videoEpisodeList.addAll(videoInfo.getVideoDetailList());
+                            }
                             // 闄勫姞瀛楁
                             if (jsonObject.optJSONObject("Extra1") != null) {
                                 if (jsonObject.optJSONObject("Extra1").optJSONObject("Attention") != null) {
@@ -814,18 +859,20 @@
                             if (extraData != null)
                                 videoInfo.setExtraData(extraData.toString());
 
-                            if (videoInfo.getVideoDetailList() == null
-                                    || videoInfo.getVideoDetailList().isEmpty()) {
+                            if (VideoUtil.videoEpisodeList == null
+                                    || VideoUtil.videoEpisodeList.isEmpty()) {
                                 Toast.makeText(getContext(), "褰辩墖宸插垹闄�",
                                         Toast.LENGTH_LONG).show();
                                 getActivity().finish();
                                 return;
                             }
+
+                            if (rv_episode.getAdapter() != null)
+                                rv_episode.getAdapter().notifyDataSetChanged();
                             // videoInfo.setSave(jsonObject.getJSONObject("Data").optBoolean("Save"));
                             if (isSetup) {
-                                mVideoInfo.getVideoDetailList().clear();
-                                mVideoInfo.setVideoDetailList(videoInfo
-                                        .getVideoDetailList());
+                                VideoUtil.videoEpisodeList.clear();
+                                VideoUtil.videoEpisodeList.addAll(videoInfo.getVideoDetailList());
                                 EventBus.getDefault().post(videoInfo);
                                 int position = 0;
 //                                boolean isFromWatchHistory = false;
@@ -843,10 +890,9 @@
                                             "playing_position", 0);
                                 }
 //                                if (isFromWatchHistory) {
-                                getUrl(videoInfo.getVideoDetailList().get(position));
+                                getUrl(VideoUtil.videoEpisodeList.get(position));
                                 EventBus.getDefault()
-                                        .post(videoInfo
-                                                .getVideoDetailList()
+                                        .post(VideoUtil.videoEpisodeList
                                                 .get(position));
 //                                } else {// 涓嶆槸浠庤鐪嬭褰曠偣鍑昏繃鏉� --璺冲埌褰撳墠鎾斁鐨勯泦鏁�
 //                                    getUrl(videoInfo.getVideoDetailList().get(position));
@@ -861,7 +907,7 @@
                                     public void run() {
                                         EventBus.getDefault().post(videoInfo);
                                         EventBus.getDefault().post(
-                                                videoInfo.getVideoDetailList()
+                                                VideoUtil.videoEpisodeList
                                                         .get(0));
                                     }
                                 }, 200);
@@ -926,6 +972,53 @@
                 });
     }
 
+    /**
+     * 鍔犺浇鏇村鍓ч泦
+     *
+     * @param videoId
+     * @param resourceId
+     */
+    private synchronized void loadMoreEpisode(String videoId, String resourceId, int page) {
+        BeibeiVideoAPI.getVideoEpisodeList(ll_add_attention.getContext(), UserUtil.getUid(getContext()), resourceId, videoId, page, new
+
+                BasicTextHttpResponseHandler() {
+                    @Override
+                    public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws
+                            Exception {
+                        if (jsonObject.optBoolean("IsPost")) {
+                            JSONObject data = jsonObject.optJSONObject("Data");
+                            episodeHasMore = data.optBoolean("hasMore");
+                            JSONArray array = data.optJSONArray("list");
+                            if (array != null && array.length() > 0) {//
+                                Gson gson = new GsonBuilder().setFieldNamingPolicy(
+                                        FieldNamingPolicy.UPPER_CAMEL_CASE)
+                                        .create();
+                                List<VideoDetailInfo> list = gson.fromJson(array.toString(), new TypeToken<List<VideoDetailInfo>>() {
+                                }.getType());
+                                if (list != null && list.size() > 0) {
+                                    episodePage++;
+                                    VideoUtil.videoEpisodeList.addAll(list);
+                                    rv_episode.getAdapter().notifyDataSetChanged();
+                                }
+                            }
+                        }
+                    }
+
+                    @Override
+                    public void onStart() {
+                        super.onStart();
+                        episodeLoading = true;
+                    }
+
+                    @Override
+                    public void onFinish() {
+                        super.onFinish();
+                        episodeLoading = false;
+                    }
+                });
+    }
+
+
     @Override
     public void onStop() {
         super.onStop();

--
Gitblit v1.8.0