package com.atguigu.mobileplayer1020.adapter;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.atguigu.mobileplayer1020.R;
import com.atguigu.mobileplayer1020.activity.PicassoSampleActivity;
import com.atguigu.mobileplayer1020.bean.NetAudioBean;
import com.atguigu.mobileplayer1020.utils.Constant;
import com.atguigu.mobileplayer1020.utils.Utils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import org.xutils.common.util.DensityUtil;
import org.xutils.image.ImageOptions;
import org.xutils.x;
import java.util.List;
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer;
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard;
/**
* 作者:尚硅谷-杨光福 on 2017/1/18 16:27
* 微信:yangguangfu520
* QQ号:541433511
* 作用:xxxx
*/
public class RecyclerFragmentAdapter extends RecyclerView.Adapter {
private final Context mContext;
private final List<NetAudioBean.ListBean> listDatas;
/**
* 视频
*/
private static final int TYPE_VIDEO = 0;
/**
* 图片
*/
private static final int TYPE_IMAGE = 1;
/**
* 文字
*/
private static final int TYPE_TEXT = 2;
/**
* GIF图片
*/
private static final int TYPE_GIF = 3;
/**
* 软件推广
*/
private static final int TYPE_AD = 4;
public RecyclerFragmentAdapter(Context mContext, List<NetAudioBean.ListBean> listDatas) {
this.mContext = mContext;
this.listDatas = listDatas;
}
@Override
public int getItemCount() {
return listDatas.size();
}
@Override
public int getItemViewType(int position) {
String type = listDatas.get(position).getType();//video,gif,image,text,ad
int itemViewType = TYPE_VIDEO;
if ("video".equals(type)) {
itemViewType = TYPE_VIDEO;
} else if ("image".equals(type)) {
itemViewType = TYPE_IMAGE;
} else if ("text".equals(type)) {
itemViewType = TYPE_TEXT;
} else if ("gif".equals(type)) {
itemViewType = TYPE_GIF;
} else {
itemViewType = TYPE_AD;//广播
}
return itemViewType;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder = null;
switch (viewType) {
case TYPE_VIDEO://视频
viewHolder = new VideoHoder(View.inflate(mContext, R.layout.all_video_item, null));
break;
case TYPE_IMAGE://图片
viewHolder = new ImageHolder(View.inflate(mContext, R.layout.all_image_item, null));
break;
case TYPE_TEXT://文字
viewHolder = new TextHolder(View.inflate(mContext, R.layout.all_text_item, null));
break;
case TYPE_GIF://gif
viewHolder = new GifHolder(View.inflate(mContext, R.layout.all_gif_item, null));
break;
case TYPE_AD://软件广告
viewHolder = new ADHolder(View.inflate(mContext, R.layout.all_ad_item, null));
break;
default:
viewHolder = new ADHolder(View.inflate(mContext, R.layout.all_ad_item, null));
break;
}
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
int itemViewType = getItemViewType(position);
if(itemViewType==TYPE_VIDEO){
VideoHoder videoHoder = (VideoHoder) holder;
videoHoder.setData(listDatas.get(position));
} else if (itemViewType == TYPE_IMAGE) {
ImageHolder imageHolder = (ImageHolder) holder;
imageHolder.setData(listDatas.get(position));
} else if (itemViewType == TYPE_TEXT) {
TextHolder textHolder = (TextHolder) holder;
textHolder.setData(listDatas.get(position));
} else if (itemViewType == TYPE_GIF) {
GifHolder gifHolder = (GifHolder) holder;
gifHolder.setData(listDatas.get(position));
} else {
ADHolder adHolder = (ADHolder) holder;
// adHolder.setData(listDatas.get(position));
}
}
class BaseViewHolder extends RecyclerView.ViewHolder{
ImageView ivHeadpic;
TextView tvName;
TextView tvTimeRefresh;
ImageView ivRightMore;
ImageView ivVideoKind;
TextView tvVideoKindText;
TextView tvShenheDingNumber;
TextView tvShenheCaiNumber;
TextView tvPostsNumber;
LinearLayout llDownload;
public BaseViewHolder(View convertView) {
super(convertView);
//公共的
ivHeadpic = (ImageView) convertView.findViewById(R.id.iv_headpic);
tvName = (TextView) convertView.findViewById(R.id.tv_name);
tvTimeRefresh = (TextView) convertView.findViewById(R.id.tv_time_refresh);
ivRightMore = (ImageView) convertView.findViewById(R.id.iv_right_more);
//bottom
ivVideoKind = (ImageView) convertView.findViewById(R.id.iv_video_kind);
tvVideoKindText = (TextView) convertView.findViewById(R.id.tv_video_kind_text);
tvShenheDingNumber = (TextView) convertView.findViewById(R.id.tv_shenhe_ding_number);
tvShenheCaiNumber = (TextView) convertView.findViewById(R.id.tv_shenhe_cai_number);
tvPostsNumber = (TextView) convertView.findViewById(R.id.tv_posts_number);
llDownload = (LinearLayout) convertView.findViewById(R.id.ll_download);
//设置item的点击事件
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NetAudioBean.ListBean listEntity = listDatas.get(getLayoutPosition());
if(listEntity !=null ){
//3.传递视频列表
Intent intent = new Intent(mContext,PicassoSampleActivity.class);
if(listEntity.getType().equals("gif")){
String url = Constant.BASE_URL+listEntity.getGif().getImages().get(0);
intent.putExtra("url",url);
mContext.startActivity(intent);
}else if(listEntity.getType().equals("image")){
String url = Constant.BASE_URL+listEntity.getImage().getThumbnail_small().get(0);
intent.putExtra("url",url);
mContext.startActivity(intent);
}
}
}
});
}
/**
* 设置公共部分的数据
* @param mediaItem
*/
public void setData(NetAudioBean.ListBean mediaItem) {
//设置头像
if (mediaItem.getU() != null && mediaItem.getU().getHeader() != null && mediaItem.getU().getHeader().get(0) != null) {
x.image().bind(ivHeadpic, Constant.BASE_URL+mediaItem.getU().getHeader().get(0));
}
//设置文本
if (mediaItem.getU() != null && mediaItem.getU().getName() != null) {
tvName.setText(mediaItem.getU().getName() + "");
}
tvTimeRefresh.setText(mediaItem.getPasstime());
//设置标签
List<NetAudioBean.ListBean.TagsBean> tagsEntities = mediaItem.getTags();
if (tagsEntities != null && tagsEntities.size() > 0) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < tagsEntities.size(); i++) {
buffer.append(tagsEntities.get(i).getName() + " ");
}
tvVideoKindText.setText(buffer.toString());
}
//设置点赞,踩,转发
tvShenheDingNumber.setText(mediaItem.getUp());
tvShenheCaiNumber.setText(mediaItem.getDown() + "");
tvPostsNumber.setText(mediaItem.getForward() + "");
}
}
class VideoHoder extends BaseViewHolder {
Utils utils;
TextView tvContext;
JCVideoPlayerStandard jcvVideoplayer;
TextView tvPlayNums;
TextView tvVideoDuration;
ImageView ivCommant;
TextView tvCommantContext;
VideoHoder(View convertView) {
super(convertView);
//中间公共部分 -所有的都有
tvContext = (TextView) convertView.findViewById(R.id.tv_context);
utils = new Utils();
tvPlayNums = (TextView) convertView.findViewById(R.id.tv_play_nums);
tvVideoDuration = (TextView) convertView.findViewById(R.id.tv_video_duration);
ivCommant = (ImageView) convertView.findViewById(R.id.iv_commant);
tvCommantContext = (TextView) convertView.findViewById(R.id.tv_commant_context);
jcvVideoplayer = (JCVideoPlayerStandard) convertView.findViewById(R.id.jcv_videoplayer);
}
public void setData(NetAudioBean.ListBean mediaItem) {
super.setData(mediaItem);
//设置文本-所有的都有,只有广告没有哦
tvContext.setText(mediaItem.getText() + "_" + mediaItem.getType());
//视频特有的------------------------
//第一个参数是视频播放地址,第二个参数是显示封面的地址,第三参数是标题
boolean setUp = jcvVideoplayer.setUp(Constant.BASE_URL+ mediaItem.getVideo().getVideo().get(0), JCVideoPlayer.SCREEN_LAYOUT_LIST,
"");
//加载图片
if (setUp) {
//设置默认封面
Glide.with(mContext).load(Constant.BASE_URL+mediaItem.getVideo().getThumbnail().get(0)).into(jcvVideoplayer.thumbImageView);
}
tvPlayNums.setText(mediaItem.getVideo().getPlaycount() + "次播放");
tvVideoDuration.setText(utils.stringForTime(mediaItem.getVideo().getDuration() * 1000) + "");
}
}
class ImageHolder extends BaseViewHolder{
TextView tvContext;
ImageView ivImageIcon;
ImageHolder(View convertView) {
super(convertView);
//中间公共部分 -所有的都有
tvContext = (TextView) convertView.findViewById(R.id.tv_context);
ivImageIcon = (ImageView) convertView.findViewById(R.id.iv_image_icon);
}
public void setData(NetAudioBean.ListBean mediaItem) {
super.setData(mediaItem);
//设置文本-所有的都有
tvContext.setText(mediaItem.getText() + "_" + mediaItem.getType());
//图片特有的
ivImageIcon.setImageResource(R.drawable.bg_item);
if (mediaItem.getImage() != null && mediaItem.getImage() != null && mediaItem.getImage().getThumbnail_small() != null) {
Glide.with(mContext).load(Constant.BASE_URL+mediaItem.getImage().getThumbnail_small().get(0)).
placeholder(R.drawable.bg_item).
error(R.drawable.bg_item).
diskCacheStrategy(DiskCacheStrategy.ALL).
into(ivImageIcon);
}
}
}
class TextHolder extends BaseViewHolder{
TextView tvContext;
TextHolder(View convertView) {
super(convertView);
//中间公共部分 -所有的都有
tvContext = (TextView) convertView.findViewById(R.id.tv_context);
}
public void setData(NetAudioBean.ListBean mediaItem) {
super.setData(mediaItem);
//设置文本-所有的都有
tvContext.setText(mediaItem.getText() + "_" + mediaItem.getType());
}
}
class GifHolder extends BaseViewHolder{
TextView tvContext;
ImageView ivImageGif;
private ImageOptions imageOptions;
GifHolder(View convertView) {
super(convertView);
//中间公共部分 -所有的都有
tvContext = (TextView) convertView.findViewById(R.id.tv_context);
ivImageGif = (ImageView) convertView.findViewById(R.id.iv_image_gif);
imageOptions = new ImageOptions.Builder()
//包裹类型
.setSize(ViewGroup.LayoutParams.WRAP_CONTENT, -2)
//设置圆角
.setRadius(DensityUtil.dip2px(5))
.setIgnoreGif(false)//是否忽略gif图。false表示不忽略。不写这句,默认是true
.setImageScaleType(ImageView.ScaleType.CENTER_CROP)
.setLoadingDrawableId(R.drawable.video_default)
.setFailureDrawableId(R.drawable.video_default)
.build();
}
public void setData(NetAudioBean.ListBean mediaItem) {
super.setData(mediaItem);
//设置文本-所有的都有
tvContext.setText(mediaItem.getText() + "_" + mediaItem.getType());
//下面是gif
if (mediaItem.getGif() != null && mediaItem.getGif() != null && mediaItem.getGif().getImages() != null) {
Glide.with(mContext).load(Constant.BASE_URL+mediaItem.getGif().getImages().get(0)).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(ivImageGif);
// x.image().bind(ivImageGif, mediaItem.getGif().getImages().get(0), imageOptions);
}
}
}
class ADHolder extends RecyclerView.ViewHolder{
TextView tvContext;
ImageView ivImageIcon;
Button btnInstall;
ADHolder(View convertView) {
super(convertView);
//中间公共部分 -所有的都有
tvContext = (TextView) convertView.findViewById(R.id.tv_context);
btnInstall = (Button) convertView.findViewById(R.id.btn_install);
ivImageIcon = (ImageView) convertView.findViewById(R.id.iv_image_icon);
}
}
}