From 8039a1b2fbfa3471b6f726d3e839d7867c81a84f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 10 十月 2020 18:51:24 +0800
Subject: [PATCH] 资讯与小说集成

---
 library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java |  187 ++++++++++++++++++++++------------------------
 1 files changed, 91 insertions(+), 96 deletions(-)

diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsContentFragment.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java
similarity index 67%
rename from library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsContentFragment.java
rename to library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java
index f928360..03af61a 100644
--- a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsContentFragment.java
+++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java
@@ -1,21 +1,19 @@
 package com.yeshi.ec.library_baiducpu.fragment;
 
-import android.content.Context;
+import android.graphics.Canvas;
 import android.graphics.Color;
+import android.graphics.Rect;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
 import android.support.v4.widget.SwipeRefreshLayout;
+import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.util.Log;
 import android.view.Gravity;
-import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-import com.androidquery.AQuery;
 import com.baidu.mobad.feeds.RequestParameters;
 import com.baidu.mobads.nativecpu.CPUAdRequest;
 import com.baidu.mobads.nativecpu.CpuLpFontSize;
@@ -25,7 +23,7 @@
 import com.lcjian.library.util.common.DimenUtils;
 import com.ut.device.UTDevice;
 import com.yeshi.ec.library_baiducpu.R;
-import com.yeshi.ec.library_baiducpu.entity.NativeCPUView;
+import com.yeshi.ec.library_baiducpu.adapter.BaiduCPUContentAdapter;
 import com.yeshi.ec.library_baiducpu.entity.SpinnerItem;
 
 import java.util.ArrayList;
@@ -34,7 +32,12 @@
 /**
  * 鐧惧害璧勮
  */
-public class BaiDuNewsContentFragment extends RetainViewFragment implements NativeCPUManager.CPUAdListener {
+public class BaiDuCPUContentFragment extends RetainViewFragment implements NativeCPUManager.CPUAdListener {
+
+    public final static int VIEW_TYPE_NEWS = 1;
+    public final static int VIEW_TYPE_SMALLVIDEO = 2;
+    public final static int VIEW_TYPE_VIDEO = 3;
+
     private final String YOUR_APP_ID = "be796ac7"; // 鍙屽紩鍙蜂腑濉啓鑷繁鐨凙PPSID
     private List<IBasicCPUData> nrAdList = new ArrayList<IBasicCPUData>();
     private NativeCPUManager mCpuManager;
@@ -45,17 +48,20 @@
 
     private boolean isLoad;
 
-    private MyAdapter adapter;
+    private BaiduCPUContentAdapter adapter;
 
     private final static String TAG = "BaiDuNewsContent";
 
     private TextView footerView;
 
+    private int viewType;
 
-    public static BaiDuNewsContentFragment newInstance(SpinnerItem spinnerItem) {
-        BaiDuNewsContentFragment fragment = new BaiDuNewsContentFragment();
+
+    public static BaiDuCPUContentFragment newInstance(SpinnerItem spinnerItem, int viewType) {
+        BaiDuCPUContentFragment fragment = new BaiDuCPUContentFragment();
         Bundle bundle = new Bundle();
         bundle.putSerializable("item", spinnerItem);
+        bundle.putInt("viewType", viewType);
         fragment.setArguments(bundle);
         return fragment;
     }
@@ -84,6 +90,8 @@
                             isLoad = true;
                             if (nrAdList != null && nrAdList.size() > 0)
                                 footerView.setVisibility(View.VISIBLE);
+                            else
+                                footerView.setVisibility(View.GONE);
                             loadAd(currentPage);
                         }
                     }
@@ -107,9 +115,55 @@
         footerView.setTextSize(12);
     }
 
+    RecyclerView.ItemDecoration itemDecoration2 = new RecyclerView.ItemDecoration() {
+        @Override
+        public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
+            super.onDraw(c, parent, state);
+        }
+
+        @Override
+        public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
+            super.onDrawOver(c, parent, state);
+        }
+
+        @Override
+        public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+            super.getItemOffsets(outRect, view, parent, state);
+            int index = parent.getChildAdapterPosition(view);
+            int total = parent.getAdapter().getItemCount();
+            int minWidth = DimenUtils.dipToPixels(2, view.getContext());
+            if (index % 2 == 0) {
+                outRect.left = 0; //绗竴鍒楀乏杈硅创杈�
+                outRect.right = minWidth;
+            } else {
+                outRect.right = 0; //绗竴鍒楀乏杈硅创杈�
+                outRect.left = minWidth;
+            }
+
+            if (index - 1 > 0) {
+                outRect.top = minWidth;
+            } else
+                outRect.top = 0;
+
+            if (total % 2 == 0) {
+                if (total > 2 && (index < total - 2))
+                    outRect.bottom = minWidth;
+                else
+                    outRect.bottom = 0;
+            } else {
+                if (total > 2 && (index < total - 1))
+                    outRect.bottom = minWidth;
+                else
+                    outRect.bottom = 0;
+            }
+        }
+    };
+
+
     private void initData() {
         Bundle bundle = getArguments();
         SpinnerItem item = (SpinnerItem) bundle.getSerializable("item");
+        viewType = bundle.getInt("viewType");
         bundle.clear();
         mChannelId = item.getmId();
 
@@ -119,9 +173,27 @@
          */
         mCpuManager.setLpFontSize(CpuLpFontSize.SMALL);
         mCpuManager.setLpDarkMode(true);
-        adapter = new MyAdapter(getContext());
+        adapter = new BaiduCPUContentAdapter(getContext(), viewType, nrAdList);
         rv_news.setAdapter(adapter);
-        rv_news.setLayoutManager(new LinearLayoutManager(getContext()));
+
+        if (viewType == VIEW_TYPE_SMALLVIDEO) {
+            RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getContext(), 2);
+            rv_news.setLayoutManager(layoutManager);
+            //缁熶竴鍒嗕负2鍒�
+            ((GridLayoutManager) rv_news.getLayoutManager()).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
+                @Override
+                public int getSpanSize(int position) {
+                    if (position >= nrAdList.size())
+                        return 2;
+                    else
+                        return 1;
+                }
+            });
+            rv_news.addItemDecoration(itemDecoration2);
+        } else {
+            rv_news.setLayoutManager(new LinearLayoutManager(getContext()));
+        }
+
         srl_news.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override
             public void onRefresh() {
@@ -165,6 +237,13 @@
     @Override
     public void onAdLoaded(List<IBasicCPUData> list) {
         onLoadFinish();
+        for (int i = list.size() - 1; i >= 0; i--) {
+            if ("ad".equalsIgnoreCase(list.get(i).getType())) {
+                list.remove(i--);
+                break;
+            }
+        }
+
         int start = nrAdList.size();
         if (currentPage == 1) {
             nrAdList.clear();
@@ -209,90 +288,6 @@
     @Override
     public void onAdStatusChanged(String s) {
 
-    }
-
-    class MyAdapter extends RecyclerView.Adapter {
-        private LayoutInflater inflater;
-        private AQuery aq;
-        private View footerView;
-
-        private final int TYPE_FOOTER = 1;
-        private final int TYPE_CONTENT = 2;
-
-
-        public MyAdapter(Context context) {
-            inflater = LayoutInflater.from(getContext());
-            aq = new AQuery(context);
-        }
-
-        public void setFooterView(View footerView) {
-            this.footerView = footerView;
-        }
-
-
-        @NonNull
-        @Override
-        public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-            if (viewType == TYPE_CONTENT)
-                return new ViewHolder(inflater.inflate(R.layout.item_baidu_news, null, false));
-            else
-                return new FooterViewHolder(footerView);
-        }
-
-        @Override
-        public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
-            if (holder instanceof ViewHolder) {
-                ViewHolder viewHolder = (ViewHolder) holder;
-                final IBasicCPUData nrAd = nrAdList.get(position);
-                final NativeCPUView cpuView = new NativeCPUView(getContext());
-                if (cpuView.getParent() != null) {
-                    ((ViewGroup) cpuView.getParent()).removeView(cpuView);
-                }
-                cpuView.setItemData(nrAd, aq);
-                viewHolder.rl_container.removeAllViews();
-                viewHolder.rl_container.addView(cpuView);
-                nrAd.onImpression(viewHolder.view);
-                viewHolder.view.setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View view) {
-                        nrAd.handleClick(view);
-                    }
-                });
-            }
-        }
-
-        @Override
-        public int getItemCount() {
-            int count = nrAdList.size();
-            if (footerView != null)
-                count++;
-            return count;
-        }
-
-        @Override
-        public int getItemViewType(int position) {
-            if (position >= nrAdList.size())
-                return TYPE_FOOTER;
-            else
-                return TYPE_CONTENT;
-        }
-
-        class ViewHolder extends RecyclerView.ViewHolder {
-            RelativeLayout rl_container;
-            View view;
-
-            public ViewHolder(View itemView) {
-                super(itemView);
-                view = itemView;
-                rl_container = itemView.findViewById(R.id.native_outer_view);
-            }
-        }
-
-        class FooterViewHolder extends RecyclerView.ViewHolder {
-            public FooterViewHolder(View itemView) {
-                super(itemView);
-            }
-        }
     }
 
 }

--
Gitblit v1.8.0