package com.weikou.beibeivideo.ui.video; import android.app.Activity; import android.content.Intent; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import com.weikou.beibeivideo.entity.VideoInfo; import com.weikou.beibeivideo.entity.ad.ExpressAdContainer; import com.weikou.beibeivideo.entity.video.VideoContent; import com.weikou.beibeivideo.entity.video.holder.VideoHolder; import com.weikou.beibeivideo.ui.media.VideoDetailActivity2; import com.weikou.beibeivideo.util.ad.ExpressAdManager; import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.util.video.VideoUIUtil; import java.util.List; import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade; /** * 一列视频样式 */ public class VideoCloumn1Adapter extends RecyclerView.Adapter { private List contentList; private Activity mContext; private LayoutInflater inflater; private View headerView; private View footerView; private String from; private final static int TYPE_HEADER = 10001; private final static int TYPE_FOOTER = 10002; public void setHeaderView(View headerView) { this.headerView = headerView; } public void setFooterView(View footerView) { this.footerView = footerView; } public VideoCloumn1Adapter(Activity context, List contentList, String from) { this.contentList = contentList; mContext = context; inflater = LayoutInflater.from(context); this.from = from; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType == TYPE_HEADER) { return new HeaderViewHolder(headerView); } else if (viewType == TYPE_FOOTER) { return new HeaderViewHolder(footerView); } else if (viewType == VideoContent.TYPE_AD) { return new VideoAdHolder(inflater.inflate(R.layout.item_video_list_column1_ad, parent, false)); } else if (viewType == VideoContent.TYPE_VIDEO) { return new VideoHolder(inflater.inflate(R.layout.item_star_work, parent, false)); } return null; } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { if ((holder instanceof HeaderViewHolder) || (holder instanceof FooterViewHolder)) { return; } if (headerView != null) position = position - 1; final VideoContent videoContent = contentList.get(position); if (holder instanceof VideoHolder) { final VideoInfo info = videoContent.getVideo(); VideoHolder viewHolder = (VideoHolder) holder; VideoUIUtil.setVideoListItem(mContext, viewHolder, new View.OnClickListener() { @Override public void onClick(View v) { myClick(info, v); } }, info,1,-1); } else if (holder instanceof VideoAdHolder) { final VideoAdHolder viewHolder = (VideoAdHolder) holder; final ExpressAdContainer ad = videoContent.getAd(); viewHolder.fl_ad.removeAllViews(); //渲染 ExpressAdManager.renderAndFillAd(mContext, ad, viewHolder.fl_ad, ExpressAdManager.POSITION_RECOMMEND, new ExpressAdManager.IAdEventListener() { @Override public void closeAd(ExpressAdContainer ad) { contentList.remove(videoContent); notifyDataSetChanged(); } }); } } @Override public int getItemCount() { int count = contentList.size(); if (headerView != null) count++; if (footerView != null) count++; return count; } @Override public int getItemViewType(int position) { int count = getItemCount(); if (count == contentList.size()) { return contentList.get(position).getType(); } else { if (headerView != null) { if (position == 0) return TYPE_HEADER; else if (position - 1 < contentList.size()) return contentList.get(position - 1).getType(); else return TYPE_FOOTER; } else { if (position < contentList.size()) return contentList.get(position).getType(); else return TYPE_FOOTER; } } } private void myClick(VideoInfo info, final View v) { Intent intent = new Intent(v.getContext(), VideoDetailActivity2.class); intent.putExtra("video_info", info); intent.putExtra("from", from); v.getContext().startActivity(intent); } class VideoAdHolder extends RecyclerView.ViewHolder { View view; FrameLayout fl_ad; public VideoAdHolder(View view) { super(view); this.view = view; fl_ad = view.findViewById(R.id.fl_ad); } } class HeaderViewHolder extends RecyclerView.ViewHolder { public HeaderViewHolder(View view) { super(view); } } class FooterViewHolder extends RecyclerView.ViewHolder { public FooterViewHolder(View view) { super(view); } } }