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 android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import com.bumptech.glide.Glide;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.weikou.beibeivideo.R;
|
import com.weikou.beibeivideo.entity.VideoDetailInfo;
|
import com.weikou.beibeivideo.entity.VideoInfo;
|
import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
|
import com.weikou.beibeivideo.entity.video.VideoContent;
|
import com.weikou.beibeivideo.ui.media.VideoDetailActivity;
|
import com.weikou.beibeivideo.util.ad.ExpressAdManager;
|
|
import java.util.List;
|
|
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
|
|
/**
|
* 一列视频样式
|
*/
|
public class SearchResultAdapter extends RecyclerView.Adapter {
|
|
private List<VideoContent> contentList;
|
|
private Activity mContext;
|
|
private LayoutInflater inflater;
|
|
private View headerView;
|
|
private View footerView;
|
|
|
private final static int TYPE_HEADER = 10001;
|
private final static int TYPE_FOOTER = 10002;
|
|
private final static int TYPE_VIDEO_ALBUM = 11;
|
private final static int TYPE_VIDEO_SIMPLE = 12;
|
|
|
public void setHeaderView(View headerView) {
|
this.headerView = headerView;
|
}
|
|
public void setFooterView(View footerView) {
|
this.footerView = footerView;
|
}
|
|
public SearchResultAdapter(Activity context, List<VideoContent> contentList) {
|
this.contentList = contentList;
|
mContext = context;
|
inflater = LayoutInflater.from(context);
|
}
|
|
@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 == TYPE_VIDEO_ALBUM) {
|
return new AlbumVideoHolder(inflater.inflate(R.layout.item_video_search_result_album, parent, false));
|
} else if (viewType == TYPE_VIDEO_SIMPLE) {
|
return new SimpleVideoHolder(inflater.inflate(R.layout.item_video_search_result_video, 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 AlbumVideoHolder) {
|
final VideoInfo info = videoContent.getVideo();
|
final AlbumVideoHolder albumVideoHolder = (AlbumVideoHolder) holder;
|
try {
|
String pic=info.getVpicture();
|
if(StringUtils.isBlank(pic))
|
pic=info.getPicture();
|
|
Glide.with(mContext).load(pic).transition(withCrossFade()).placeholder(R.color.black).into(albumVideoHolder.iv_picture);
|
} catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
}
|
albumVideoHolder.tv_name.setText(info.getName() + "");
|
albumVideoHolder.tv_type.setText(info.getTag());
|
albumVideoHolder.tv_actors.setText(info.getMainActor());
|
|
|
albumVideoHolder.tv_play.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
myClick(info, v, 0);
|
}
|
});
|
//设置专辑
|
if (videoContent.getVideo().getVideoDetailList() == null || videoContent.getVideo().getVideoDetailList().size() == 0) {
|
albumVideoHolder.ll_videos.setVisibility(View.GONE);
|
} else {
|
albumVideoHolder.ll_videos.setVisibility(View.VISIBLE);
|
final List<VideoDetailInfo> videoDetailInfos = videoContent.getVideo().getVideoDetailList();
|
albumVideoHolder.tv_video_1.setVisibility(videoDetailInfos.size() - 1 >= 0 ? View.VISIBLE : View.INVISIBLE);
|
albumVideoHolder.tv_video_2.setVisibility(videoDetailInfos.size() - 2 >= 0 ? View.VISIBLE : View.INVISIBLE);
|
albumVideoHolder.tv_video_3.setVisibility(videoDetailInfos.size() - 3 >= 0 ? View.VISIBLE : View.INVISIBLE);
|
albumVideoHolder.tv_video_4.setVisibility(videoDetailInfos.size() - 4 >= 0 ? View.VISIBLE : View.INVISIBLE);
|
albumVideoHolder.tv_video_5.setVisibility(videoDetailInfos.size() - 5 >= 0 ? View.VISIBLE : View.INVISIBLE);
|
if (videoDetailInfos.size() <= 5) {
|
if (albumVideoHolder.tv_video_1.getVisibility() == View.VISIBLE)
|
albumVideoHolder.tv_video_1.setText(videoDetailInfos.get(0).getTag());
|
if (albumVideoHolder.tv_video_2.getVisibility() == View.VISIBLE)
|
albumVideoHolder.tv_video_2.setText(videoDetailInfos.get(1).getTag());
|
if (albumVideoHolder.tv_video_3.getVisibility() == View.VISIBLE)
|
albumVideoHolder.tv_video_3.setText(videoDetailInfos.get(2).getTag());
|
if (albumVideoHolder.tv_video_4.getVisibility() == View.VISIBLE)
|
albumVideoHolder.tv_video_4.setText(videoDetailInfos.get(3).getTag());
|
if (albumVideoHolder.tv_video_5.getVisibility() == View.VISIBLE)
|
albumVideoHolder.tv_video_5.setText(videoDetailInfos.get(4).getTag());
|
} else {
|
albumVideoHolder.tv_video_1.setText(videoDetailInfos.get(0).getTag());
|
albumVideoHolder.tv_video_2.setText(videoDetailInfos.get(1).getTag());
|
albumVideoHolder.tv_video_3.setText("...");
|
albumVideoHolder.tv_video_4.setText(videoDetailInfos.get(videoDetailInfos.size() - 2).getTag());
|
albumVideoHolder.tv_video_5.setText(videoDetailInfos.get(videoDetailInfos.size() - 1).getTag());
|
}
|
albumVideoHolder.tv_video_1.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (albumVideoHolder.tv_video_1.getVisibility() == View.VISIBLE) {
|
myClick(info, v, 0);
|
}
|
}
|
});
|
|
albumVideoHolder.tv_video_2.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (albumVideoHolder.tv_video_2.getVisibility() == View.VISIBLE) {
|
myClick(info, v, 1);
|
}
|
}
|
});
|
|
albumVideoHolder.tv_video_3.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (albumVideoHolder.tv_video_3.getVisibility() == View.VISIBLE) {
|
if (videoDetailInfos.size() > 5)
|
myClick(info, v, 0);
|
else
|
myClick(info, v, 3);
|
}
|
}
|
});
|
|
albumVideoHolder.tv_video_4.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (albumVideoHolder.tv_video_4.getVisibility() == View.VISIBLE) {
|
myClick(info, v, Integer.parseInt(videoDetailInfos.get(3).getTag()));
|
}
|
}
|
});
|
|
albumVideoHolder.tv_video_5.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (albumVideoHolder.tv_video_5.getVisibility() == View.VISIBLE) {
|
myClick(info, v, Integer.parseInt(videoDetailInfos.get(4).getTag()));
|
}
|
}
|
});
|
|
|
}
|
} else if (holder instanceof SimpleVideoHolder) {
|
final VideoInfo info = videoContent.getVideo();
|
SimpleVideoHolder simpleVideoHolder = (SimpleVideoHolder) holder;
|
try {
|
Glide.with(mContext).load(info.getPicture()).transition(withCrossFade()).placeholder(R.color.black).into(simpleVideoHolder.iv_movie_cover);
|
} catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
}
|
simpleVideoHolder.tv_movie_title.setText(info.getName() + "");
|
|
|
if (!StringUtils.isBlank(info.getTag()))
|
simpleVideoHolder.tv_tag.setText(info.getTag());
|
else
|
simpleVideoHolder.tv_tag.setText("");
|
|
simpleVideoHolder.view.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
myClick(info, v, 0);
|
}
|
});
|
|
|
} 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;
|
}
|
|
/**
|
* 获取内容类型
|
*
|
* @param videoContent
|
* @return
|
*/
|
//获取内容的类型
|
private int getContentType(VideoContent videoContent) {
|
if (videoContent.getType() == VideoContent.TYPE_AD)
|
return VideoContent.TYPE_AD;
|
else {
|
if (videoContent.getVideo().getShowType() == 1)
|
return TYPE_VIDEO_ALBUM;
|
else
|
return TYPE_VIDEO_SIMPLE;
|
}
|
}
|
|
@Override
|
public int getItemViewType(int position) {
|
int count = getItemCount();
|
if (count == contentList.size()) {
|
return getContentType(contentList.get(position));
|
} else {
|
if (headerView != null) {
|
if (position == 0)
|
return TYPE_HEADER;
|
else if (position - 1 < contentList.size())
|
return getContentType(contentList.get(position - 1));
|
else
|
return TYPE_FOOTER;
|
} else {
|
if (position < contentList.size())
|
return getContentType(contentList.get(position));
|
else
|
return TYPE_FOOTER;
|
}
|
}
|
}
|
|
|
private void myClick(VideoInfo info, final View v, int p) {
|
Intent intent = new Intent(v.getContext(), VideoDetailActivity.class);
|
intent.putExtra("video_info", info);
|
if (p > 0)
|
intent.putExtra("playing_position", p);
|
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 AlbumVideoHolder extends RecyclerView.ViewHolder {
|
|
ImageView iv_picture;
|
TextView tv_name;
|
TextView tv_type;
|
TextView tv_actors;
|
TextView tv_play;
|
LinearLayout ll_videos;
|
TextView tv_video_1, tv_video_2, tv_video_3, tv_video_4, tv_video_5;
|
View view;
|
|
public AlbumVideoHolder(View view) {
|
super(view);
|
this.view = view;
|
iv_picture = view.findViewById(R.id.iv_picture);
|
tv_name = view.findViewById(R.id.tv_name);
|
tv_type = view.findViewById(R.id.tv_type);
|
tv_actors = view.findViewById(R.id.tv_actors);
|
tv_play = view.findViewById(R.id.tv_play);
|
ll_videos = view.findViewById(R.id.ll_videos);
|
tv_video_1 = view.findViewById(R.id.tv_video_1);
|
tv_video_2 = view.findViewById(R.id.tv_video_2);
|
tv_video_3 = view.findViewById(R.id.tv_video_3);
|
tv_video_4 = view.findViewById(R.id.tv_video_4);
|
tv_video_5 = view.findViewById(R.id.tv_video_5);
|
}
|
}
|
|
class SimpleVideoHolder extends RecyclerView.ViewHolder {
|
ImageView iv_movie_cover;
|
TextView tv_movie_title, tv_tag;
|
View view;
|
|
public SimpleVideoHolder(View view) {
|
super(view);
|
this.view = view;
|
iv_movie_cover = view.findViewById(R.id.iv_movie_cover);
|
tv_movie_title = view.findViewById(R.id.tv_movie_title);
|
tv_tag = view.findViewById(R.id.tv_tag);
|
}
|
}
|
|
class HeaderViewHolder extends RecyclerView.ViewHolder {
|
public HeaderViewHolder(View view) {
|
super(view);
|
}
|
}
|
|
class FooterViewHolder extends RecyclerView.ViewHolder {
|
public FooterViewHolder(View view) {
|
super(view);
|
}
|
}
|
|
|
}
|