From 3945f9a2c70335958c64c73894e3a1a14a7113b3 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 08 八月 2020 10:11:14 +0800
Subject: [PATCH] '完善'

---
 BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendNewAdapter.java |  358 ++++++++++++++++++++++++----------------------------------
 1 files changed, 149 insertions(+), 209 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendNewAdapter.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendNewAdapter.java
index d72371e..ee0a2c2 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendNewAdapter.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendNewAdapter.java
@@ -1,7 +1,6 @@
 package com.weikou.beibeivideo.ui.recommend;
 
 import android.app.Activity;
-import android.content.Context;
 import android.content.Intent;
 import android.graphics.Canvas;
 import android.graphics.Rect;
@@ -18,88 +17,58 @@
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
+import android.widget.VideoView;
 
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
-import com.bytedance.sdk.openadsdk.TTAdDislike;
+import com.bytedance.sdk.openadsdk.TTAdConstant;
+import com.bytedance.sdk.openadsdk.TTFeedAd;
 import com.lcjian.library.util.SystemCommon;
 import com.lcjian.library.util.common.DimenUtils;
 import com.lcjian.library.util.common.StringUtils;
 import com.lcjian.library.widget.RatioLayout;
 import com.viewpagerindicator.LinePageIndicator;
-import com.weikou.beibeivideo.entity.HomeAd;
 import com.weikou.beibeivideo.entity.HomeType;
 import com.weikou.beibeivideo.entity.HomeVideo;
 import com.weikou.beibeivideo.entity.VideoInfo;
 import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
+import com.weikou.beibeivideo.entity.recommend.HomeTypeContent;
+import com.weikou.beibeivideo.entity.recommend.RecommendContent;
 import com.weikou.beibeivideo.test.MyViewPager;
 import com.weikou.beibeivideo.ui.media.VideoDetailActivity;
+import com.weikou.beibeivideo.util.ad.CSJAdUtil;
+import com.weikou.beibeivideo.util.ad.ExpressAdManager;
 import com.yeshi.buwanshequ.R;
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 public class RecommendNewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
 
-    //骞垮憡Container
-    private ExpressAdContainer firstAd;
-    private List<ExpressAdContainer> bigImgAdList;//澶у浘骞垮憡鍒楄〃
     private Activity mContext;
-    private List<HomeType> homeTypeList;
-    private List<HomeAd> homeAdList;
-
-    private final static int TYPE_HOME_BANNER = 1;
-    private final static int TYPE_HOME_TYPE = 2;
-    private final static int TYPE_HOME_AD = 3;
+    List<RecommendContent> contentList;
     private LayoutInflater inflater;
 
-    public RecommendNewAdapter(Activity context, List<HomeType> homeTypeList, List<HomeAd> homeAdList) {
+    public RecommendNewAdapter(Activity context, List<RecommendContent> contentList) {
         this.mContext = context;
-        this.homeTypeList = homeTypeList;
-        this.homeAdList = homeAdList;
+        this.contentList = contentList;
         inflater = LayoutInflater.from(mContext);
     }
-
-    public void setBigImgAdList(List<ExpressAdContainer> bigImgAdList) {
-        this.bigImgAdList = bigImgAdList;
-    }
-
-    public void setFirstAd(ExpressAdContainer firstAd) {
-        this.firstAd = firstAd;
-    }
-
 
     @Override
     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
         switch (viewType) {
-            case TYPE_HOME_BANNER:
+            case RecommendContent.TYPE_BANNER:
                 return new HomeBannerHolder(inflater.inflate(R.layout.recommend_top, parent, false));
-            case TYPE_HOME_TYPE:
+            case RecommendContent.TYPE_HOMETYPE:
                 return new HomeTypeHolder(inflater.inflate(R.layout.item_recommend_home_type, null, false), new RecyclerView.RecycledViewPool());
-            case TYPE_HOME_AD:
+            case RecommendContent.TYPE_AD:
                 return new AdHolder(inflater.inflate(R.layout.item_recommend_home_type_ad, parent, false));
         }
         return null;
     }
 
-    private int getHomeTypeByAbsolutePosition(int p) {
-        int position = p;
-        if (p == 0)
-            position = p;
-        else if (p == 1) {
-            if (hasBanner())
-                position--;
-        } else {
-            if (hasBanner())
-                position--;
-            if (hasAd())
-                position--;
-        }
-
-        return position;
-    }
 
     private Runnable autoPlayBanner = null;
 
@@ -109,9 +78,10 @@
             autoPlayBanner = new Runnable() {
                 @Override
                 public void run() {
-                    if (homeAdList == null || homeAdList.size() <= 0)
-                        return;
-                    if (viewPager.getCurrentItem() >= homeAdList.size() - 1) {
+                    if (contentList != null && contentList.size() > 0 && contentList.get(0).getType() == RecommendContent.TYPE_BANNER)
+                        if (contentList.get(0).getHomeBannerList() == null || contentList.get(0).getHomeBannerList().size() <= 0)
+                            return;
+                    if (viewPager.getCurrentItem() >= contentList.get(0).getHomeBannerList().size() - 1) {
                         viewPager.setCurrentItem(0, true);
                     } else {
                         viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
@@ -179,10 +149,11 @@
 
     @Override
     public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
+        final RecommendContent content = contentList.get(i);
         if (viewHolder instanceof HomeBannerHolder) {
             int width = (int) SystemCommon.getScreenWidth(mContext);
             HomeBannerHolder holder = (HomeBannerHolder) viewHolder;
-            holder.vp_recommend.setAdapter(new RecommendTopAdapter(homeAdList, mContext, false));
+            holder.vp_recommend.setAdapter(new RecommendTopAdapter(content.getHomeBannerList(), mContext, false));
             holder.indicator_recommend.setScreenWidth(width);
             holder.indicator_recommend.setSelectedColor(holder.vp_recommend.getContext().getResources()
                     .getColor(R.color.yellow));
@@ -190,11 +161,13 @@
             holder.indicator_recommend.setViewPager(holder.vp_recommend);
             autoPlayBanner(holder.vp_recommend);
         } else if (viewHolder instanceof HomeTypeHolder) {
-            int position = getHomeTypeByAbsolutePosition(i);
-            if (position >= homeTypeList.size())
-                return;
-            HomeType homeType = homeTypeList.get(position);
+            HomeType homeType = content.getHomeType();
             HomeTypeHolder holder = (HomeTypeHolder) viewHolder;
+            if (homeType == null) {
+                holder.view.setVisibility(View.GONE);
+                return;
+            }
+            holder.view.setVisibility(View.VISIBLE);
 
             if (holder.rv_content.getLayoutManager() == null || !(holder.rv_content.getLayoutManager() instanceof GridLayoutManager)) {
                 RecyclerView.LayoutManager layoutManager = new GridLayoutManager(mContext, 4);
@@ -207,8 +180,16 @@
                     return 2;
                 }
             });
+            boolean isFirst = false;
+            for (RecommendContent content1 : contentList)
+                if (content1.getType() == RecommendContent.TYPE_HOMETYPE) {
+                    if (content1.getHomeType().getId().equalsIgnoreCase(content.getHomeType().getId())) {
+                        isFirst = true;
+                    }
+                    break;
+                }
 
-            HomeTypeContentAdapter adapter = new HomeTypeContentAdapter(mContext, homeType.getHomeVideoList(), position == 0 ? firstAd : null, 8);
+            HomeTypeContentAdapter adapter = new HomeTypeContentAdapter(mContext, homeType.getHomeVideoList(), isFirst ? true : false, 8);
             holder.rv_content.setAdapter(adapter);
 
             //璁剧疆闂磋窛
@@ -226,56 +207,34 @@
         } else if (viewHolder instanceof AdHolder) {
             AdHolder holder = (AdHolder) viewHolder;
             holder.fl_ad.removeAllViews();
-            ExpressAdContainer ad = null;
-            if (i <= 2) {//鍔犺浇绗竴涓箍鍛�
-                if (bigImgAdList != null && bigImgAdList.size() > 0) {
-                    ad = bigImgAdList.get(0);
-                }
-            } else {//鍔犺浇绗簩涓箍鍛�
-                if (bigImgAdList != null && bigImgAdList.size() > 1) {
-                    ad = bigImgAdList.get(1);
-                }
-            }
+            ExpressAdContainer ad = content.getAd();
 
             if (ad != null) {
                 holder.view.setVisibility(View.VISIBLE);
                 if (ad.getGdt() != null) {
-                    ViewParent parent= ad.getGdt().getParent();
-                    if(parent!=null) {
+                    ViewParent parent = ad.getGdt().getParent();
+                    if (parent != null) {
                         FrameLayout parentContainer = (FrameLayout) parent;
                         parentContainer.removeAllViews();
                     }
                     ad.getGdt().render();
                     holder.fl_ad.addView(ad.getGdt());
                 } else if (ad.getCsj() != null) {
-                    ViewParent parent= ad.getCsj().getExpressAdView().getParent();
-                    if(parent!=null) {
-                        FrameLayout parentContainer = (FrameLayout) parent;
-                        parentContainer.removeAllViews();
+                    holder.fl_ad.addView(holder.csjAdHolder.view);
+                    //濉厖骞垮憡鍐呭
+                    ArrayList<View> images = new ArrayList<>();
+                    if (ad.getCsj().getImageMode() == TTAdConstant.IMAGE_MODE_VIDEO) {
+                        holder.csjAdHolder.iv_pic.setVisibility(View.GONE);
+                        holder.csjAdHolder.vv_video.setVisibility(View.VISIBLE);
+                        images.add(holder.csjAdHolder.vv_video);
+                    } else {
+                        holder.csjAdHolder.iv_pic.setVisibility(View.VISIBLE);
+                        holder.csjAdHolder.vv_video.setVisibility(View.GONE);
+                        images.add(holder.csjAdHolder.iv_pic);
                     }
-                    ad.getCsj().render();
-                    final ExpressAdContainer adTemp = ad;
-                    ad.getCsj().setDislikeCallback(mContext, new TTAdDislike.DislikeInteractionCallback() {
-
-                        @Override
-                        public void onSelected(int i, String s) {
-                            bigImgAdList.remove(adTemp);
-                            notifyDataSetChanged();
-                        }
-
-                        @Override
-                        public void onCancel() {
-
-                        }
-
-                        @Override
-                        public void onRefuse() {
-
-                        }
-                    });
-                    holder.fl_ad.addView(ad.getCsj().getExpressAdView());
+                    CSJAdUtil.bindData(holder.csjAdHolder.view, holder.csjAdHolder.iv_close, holder.csjAdHolder.tv_title, images, ad.getCsj());
                 }
-            }else{
+            } else {
                 holder.view.setVisibility(View.GONE);
             }
         }
@@ -283,26 +242,7 @@
 
     @Override
     public int getItemCount() {
-        int count = 0;
-        if (homeTypeList != null && homeTypeList.size() > 0)
-            count += homeTypeList.size();
-        if (homeAdList != null && homeAdList.size() > 0)
-            count += 1;
-        if (bigImgAdList != null && bigImgAdList.size() > 0)
-            count += bigImgAdList.size();
-        return count;
-    }
-
-    private boolean hasBanner() {
-        return homeAdList != null && homeAdList.size() > 0;
-    }
-
-    private boolean hasHomeType() {
-        return homeTypeList != null && homeTypeList.size() > 0;
-    }
-
-    private boolean hasAd() {
-        return bigImgAdList != null && bigImgAdList.size() > 0;
+        return this.contentList.size();
     }
 
     /**
@@ -314,35 +254,7 @@
     //鑾峰彇绫诲瀷
     @Override
     public int getItemViewType(int position) {
-        if (position == 0) {
-            if (hasBanner())
-                return TYPE_HOME_BANNER;
-            else
-                return TYPE_HOME_TYPE;
-        } else if (position == getItemCount() - 1) {//鏈�鍚庝竴鏍�
-            if (hasAd())
-                return TYPE_HOME_AD;
-            else
-                return TYPE_HOME_TYPE;
-        } else {//涓棿鏍�
-            if (position == 1) {
-                if (hasBanner()) {
-                    return TYPE_HOME_TYPE;
-                } else {
-                    if (hasAd())
-                        return TYPE_HOME_AD;
-                    else
-                        return TYPE_HOME_TYPE;
-                }
-            } else if (position == 2) {
-                if (hasBanner() && hasHomeType() && hasAd())
-                    return TYPE_HOME_AD;
-                else
-                    return TYPE_HOME_TYPE;
-            } else {
-                return TYPE_HOME_TYPE;
-            }
-        }
+        return this.contentList.get(position).getType();
     }
 
     class HomeBannerHolder extends RecyclerView.ViewHolder {
@@ -368,9 +280,11 @@
         TextView tv_more;
         RecyclerView rv_content;
         RelativeLayout rl_title_item;
+        View view;
 
         public HomeTypeHolder(View convertView, RecyclerView.RecycledViewPool recycledViewPool) {
             super(convertView);
+            this.view = convertView;
             rl_title_item = convertView
                     .findViewById(R.id.rl_title_item);
             tv_category_name = convertView
@@ -390,10 +304,13 @@
 
         FrameLayout fl_ad;
         View view;
+        CSJAdHolder csjAdHolder;
+
 
         public AdHolder(View view) {
             super(view);
-            this.view=view;
+            this.view = view;
+            csjAdHolder = new CSJAdHolder(inflater.inflate(R.layout.item_ad_csj_list_column1, null));
             fl_ad = view.findViewById(R.id.fl_ad);
         }
 
@@ -402,31 +319,34 @@
 
     public class HomeTypeContentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
         private Activity mContext;
-        private List<ExpressAdContainer> adList;
-        private List<HomeVideo> homeVideoList;
+        private List<HomeTypeContent> contentList;
         private int maxItemNum;
 
-        private final int TYPE_CONTENT = 1;
-        private final int TYPE_AD = 0;
+        private ExpressAdManager expressAdManager;
+
+        private boolean needAd;
 
 
-        public HomeTypeContentAdapter(Activity context, List<HomeVideo> homeVideoList, ExpressAdContainer ad, int maxItemNum) {
+        public HomeTypeContentAdapter(final Activity context, List<HomeVideo> videoList, boolean needAd, int maxItemNum) {
+            this.needAd = needAd;
             this.mContext = context;
-            this.homeVideoList = homeVideoList;
-            if (adList == null)
-                adList = new ArrayList<>();
-            adList.clear();
-            if (ad != null)
-                adList.add(ad);
+            if (contentList == null)
+                this.contentList = new ArrayList<>();
+            this.contentList.clear();
+            for (HomeVideo hv : videoList) {
+                this.contentList.add(new HomeTypeContent(HomeTypeContent.TYPE_CONTENT, hv));
+            }
+
+
             this.maxItemNum = maxItemNum;
         }
 
         @Override
         public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int type) {
             switch (type) {
-                case TYPE_AD:
+                case HomeTypeContent.TYPE_AD:
                     return new HomeTypeAdHolder(inflater.inflate(R.layout.item_ad_list_small, parent, false));
-                case TYPE_CONTENT:
+                case HomeTypeContent.TYPE_CONTENT:
                     return new HomeTypeContentHolder(inflater.inflate(R.layout.item_movie, parent, false));
             }
             return null;
@@ -434,15 +354,10 @@
 
         @Override
         public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int p) {
+            final HomeTypeContent content = contentList.get(p);
             if (viewHolder instanceof HomeTypeContentHolder) {
                 HomeTypeContentHolder holder = (HomeTypeContentHolder) viewHolder;
-                int position = p;
-                if (adList != null && adList.size() > 0) {
-                    position -= 1;
-                }
-                if (position >= homeVideoList.size())
-                    return;
-                final HomeVideo info = homeVideoList.get(position);
+                final HomeVideo info = content.getHomeVideo();
                 //璁剧疆鍐呭
                 holder.ll_video_show.setVisibility(View.VISIBLE);
                 if (StringUtils.isEmpty(info.getPicture())) {
@@ -484,59 +399,61 @@
                             }
                         });
             } else if (viewHolder instanceof HomeTypeAdHolder) {//骞垮憡
-                HomeTypeAdHolder holder = (HomeTypeAdHolder) viewHolder;
+                final HomeTypeAdHolder holder = (HomeTypeAdHolder) viewHolder;
                 holder.fl_container.removeAllViews();
-                final ExpressAdContainer ad = adList.get(0);
-                if (ad.getGdt() != null) {
-                    ViewParent parent= ad.getGdt().getParent();
-                    if(parent!=null) {
-                        FrameLayout parentContainer = (FrameLayout) parent;
-                        parentContainer.removeAllViews();
+                final ExpressAdContainer ad = content.getAd();
+                if (ad == null) {//骞垮憡涓虹┖
+                    holder.view.setVisibility(View.GONE);
+                    if (needAd) {
+                        if (expressAdManager == null)
+                            expressAdManager = new ExpressAdManager(ExpressAdManager.SOURCE_CSJ, mContext);
+                        expressAdManager.loadRecommendSmallAd(new ExpressAdManager.IAdLoadListener() {
+                            @Override
+                            public void onSuccess(List<ExpressAdContainer> adList) {
+                                if (adList != null && adList.size() > 0) {
+                                    if (contentList != null && contentList.size() > 0 && contentList.get(0).getType() == HomeTypeContent.TYPE_CONTENT) {
+                                        contentList.add(0,new HomeTypeContent(HomeTypeContent.TYPE_AD, adList.get(0)));
+                                        notifyDataSetChanged();
+                                    }
+                                }
+                            }
+                        });
                     }
-
-                    ad.getGdt().render();
-                    holder.tv_movie_play_num.setText("112");
-                    holder.tv_movie_title.setText(adList.get(0).getGdt().getBoundData().getTitle());
-                    holder.fl_container.addView(adList.get(0).getGdt());
-                } else if (adList.get(0).getCsj() != null) {
-                    Map<String, Object> map= ad.getCsj().getMediaExtraInfo();
-                    ViewParent parent= ad.getCsj().getExpressAdView().getParent();
-                    if(parent!=null) {
-                        FrameLayout parentContainer = (FrameLayout) parent;
-                        parentContainer.removeAllViews();
+                } else {
+                    holder.view.setVisibility(View.VISIBLE);
+                    if (ad.getGdt() != null) {
+                        ViewParent parent = ad.getGdt().getParent();
+                        if (parent != null) {
+                            FrameLayout parentContainer = (FrameLayout) parent;
+                            parentContainer.removeAllViews();
+                        }
+                        ad.getGdt().render();
+                        holder.tv_movie_play_num.setText("112");
+                        holder.tv_movie_title.setText(ad.getGdt().getBoundData().getTitle());
+                        holder.fl_container.addView(ad.getGdt());
+                    } else if (ad.getCsj() != null) {
+                        holder.fl_container.addView(holder.adHolder.view);
+                        //濉厖骞垮憡鍐呭
+                        ArrayList<View> images = new ArrayList<>();
+                        if (ad.getCsj().getImageMode() == TTAdConstant.IMAGE_MODE_VIDEO) {
+                            holder.adHolder.iv_pic.setVisibility(View.GONE);
+                            holder.adHolder.vv_video.setVisibility(View.VISIBLE);
+                            images.add(holder.adHolder.vv_video);
+                        } else {
+                            holder.adHolder.iv_pic.setVisibility(View.VISIBLE);
+                            holder.adHolder.vv_video.setVisibility(View.GONE);
+                            images.add(holder.adHolder.iv_pic);
+                        }
+                        CSJAdUtil.bindData(holder.adHolder.view, holder.adHolder.iv_close, holder.adHolder.tv_title, images, ad.getCsj());
+                        holder.tv_movie_title.setText(ad.getCsj().getTitle());
                     }
-                    ad.getCsj().render();
-                    ad.getCsj().setDislikeCallback(mContext, new TTAdDislike.DislikeInteractionCallback() {
-
-                        @Override
-                        public void onSelected(int i, String s) {
-                            //鐐瑰嚮娑堝け
-                            adList.set(0,null);
-                            notifyDataSetChanged();
-                        }
-
-                        @Override
-                        public void onCancel() {
-
-                        }
-
-                        @Override
-                        public void onRefuse() {
-
-                        }
-                    });
-                    holder.fl_container.addView(ad.getCsj().getExpressAdView());
                 }
             }
         }
 
         @Override
         public int getItemCount() {
-            int count = 0;
-            if (adList != null && adList.size() > 0)
-                count++;
-            if (homeVideoList != null)
-                count += homeVideoList.size();
+            int count = contentList.size();
             if (count > maxItemNum)
                 return maxItemNum;
             else
@@ -545,10 +462,7 @@
 
         @Override
         public int getItemViewType(int position) {
-            if (position == 0 && adList.size() > 0)
-                return TYPE_AD;
-            else
-                return TYPE_CONTENT;
+            return this.contentList.get(position).getType();
         }
 
 
@@ -586,15 +500,41 @@
 
     class HomeTypeAdHolder extends RecyclerView.ViewHolder {
 
+        View view;
         FrameLayout fl_container;
         TextView tv_movie_title;
         TextView tv_movie_play_num;
+        CSJAdHolder adHolder;
 
         public HomeTypeAdHolder(View view) {
             super(view);
+            this.view = view;
             fl_container = view.findViewById(R.id.fl_container);
             tv_movie_title = view.findViewById(R.id.tv_movie_title);
             tv_movie_play_num = view.findViewById(R.id.tv_movie_play_num);
+//            adHolder = new CSJAdHolder(inflater.inflate(R.layout.item_ad_csj_list_column2, null));
+        }
+
+    }
+
+
+    class CSJAdHolder extends RecyclerView.ViewHolder {
+
+        ImageView iv_pic;
+        VideoView vv_video;
+        ImageView iv_logo;
+        TextView tv_title;
+        ImageView iv_close;
+        View view;
+
+        public CSJAdHolder(View view) {
+            super(view);
+            this.view = view;
+            iv_pic = view.findViewById(R.id.iv_pic);
+            vv_video = view.findViewById(R.id.vv_video);
+            iv_logo = view.findViewById(R.id.iv_logo);
+            tv_title = view.findViewById(R.id.tv_title);
+            iv_close = view.findViewById(R.id.iv_close);
         }
 
     }

--
Gitblit v1.8.0