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<VideoContent> 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<VideoContent> 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);
|
}
|
}
|
|
|
}
|