From 46d3fe82a77654899c02dfb29f8a5cfd2938ba9e Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 03 四月 2021 18:55:39 +0800
Subject: [PATCH] 首页推荐瀑布流加翻页

---
 BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 51 insertions(+), 6 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java
index dd7cee1..24a105e 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java
@@ -16,6 +16,7 @@
 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;
@@ -186,6 +187,8 @@
     private LinearLayout ll_ad_containner;
     private RatioLayout rl_recommend_top;
     private CirclePageIndicator indicator_recommend;
+    private boolean isLoad;
+    private View loading;
 
     private void initHomeAd() {
         View view = LayoutInflater.from(getContext()).inflate(R.layout.recommend_top, null);
@@ -247,6 +250,38 @@
         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);
+
+
+        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 && mHomeTypes.size() < 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);
@@ -276,6 +311,8 @@
             mHomeTypes = new ArrayList();
         mRecommendNewAdapter = new RecommendNewAdapter(getActivity(), mHomeTypes, ScreenUtils.getScreenWidth(getContext()));
         rv_recommend.setAdapter(mRecommendNewAdapter);
+
+        mRecommendNewAdapter.setFooterView(loading);
         setAdContent();
         initHomeAd();
         //鍔犺浇缂撳瓨鏁版嵁
@@ -661,7 +698,8 @@
 
                     @Override
                     public void onFinish() {
-                        getHomeType();
+                        homeTypePage = 1;
+                        getHomeType(homeTypePage);
                     }
                 });
     }
@@ -670,12 +708,14 @@
      * 鑾峰彇褰辩墖鏁翠綋淇℃伅
      */
 
-    private void getHomeType() {
+    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(),
+        BeibeiVideoAPI.getHomeType(context, uid, type.getId(), type.getDataKey(), page, 4,
                 new BasicTextHttpResponseHandler() {
 
                     @Override
@@ -689,6 +729,7 @@
                             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);
@@ -743,12 +784,14 @@
                             }
 
                             //娓呴櫎鑰佹暟鎹�
-                            mHomeTypes.clear();
-                            mRecommendNewAdapter.removeAllAd();
+                            if (page == 1) {
+                                mHomeTypes.clear();
+                                mRecommendNewAdapter.removeAllAd();
+                            }
                             mHomeTypes.addAll(homeTypes);
                             //濉厖鏁版嵁
                             setAdContent();
-                            if (position == 0) {
+                            if (position == 0 && page == 1) {
                                 DiskLruCache.Editor editor = cache
                                         .edit(getKey("getHomeType") + type.getId());
                                 editor.set(0, jsonObject.getJSONObject("Data")
@@ -761,7 +804,9 @@
 
                     @Override
                     public void onFinish() {
+                        isLoad = false;
                         rl_recommend.setRefreshing(false);
+                        loading.setVisibility(View.GONE);
                         try {
                         } catch (Exception e) {
                             e.printStackTrace();

--
Gitblit v1.8.0