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