package com.weikou.beibeivideo.ui.video;
|
|
import android.app.Activity;
|
import android.content.Intent;
|
import android.support.annotation.NonNull;
|
import android.support.v7.widget.RecyclerView;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.FrameLayout;
|
|
import com.bumptech.glide.Glide;
|
import com.lcjian.library.util.common.StringUtils;
|
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.VideoDetailActivity;
|
import com.weikou.beibeivideo.ui.media.VideoDetailActivity2;
|
import com.weikou.beibeivideo.util.ad.ExpressAdManager;
|
import com.weikou.beibeivideo.R;
|
|
import java.text.DecimalFormat;
|
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;
|
try {
|
Glide.with(mContext).load(info.getPicture()).transition(withCrossFade()).placeholder(R.drawable.ic_default_cover).into(viewHolder.iv_movie_cover);
|
} catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
}
|
viewHolder.tv_movie_title.setText(info.getName() + "");
|
viewHolder.tv_movie_rating.setText(StringUtils.isEmpty(info.getTag()) ? "" : info.getTag());
|
DecimalFormat df = new DecimalFormat("###.0");
|
viewHolder.tv_movie_play_num.setText(StringUtils.isBlank(info
|
.getWatchCount()) ? "0" : (Integer.parseInt(info
|
.getWatchCount())) / 10000 > 0 ? df.format(Integer.parseInt(info
|
.getWatchCount()) / 10000f) + "万" : info
|
.getWatchCount() + "");
|
viewHolder.tv_movie_comment_num.setText(info.getCommentCount());
|
viewHolder.view.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
myClick(info, v);
|
}
|
});
|
|
} 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, 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);
|
}
|
}
|
|
|
}
|