package com.ysvideo.zhibo.app.ui.video.adapter;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.text.TextUtils;
|
import android.text.TextUtils.TruncateAt;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.widget.CheckBox;
|
import android.widget.FrameLayout;
|
import android.widget.ImageButton;
|
import android.widget.ImageView;
|
import android.widget.TextView;
|
|
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.RequestManager;
|
import com.ysvideo.zhibo.app.R;
|
import com.ysvideo.zhibo.app.entity.video.VideoDetailInfo;
|
import com.ysvideo.zhibo.app.entity.video.VideoInfo;
|
import com.ysvideo.zhibo.app.entity.video.WatchHistory;
|
import com.ysvideo.zhibo.app.ui.video.VideoDetailActivity;
|
import com.ysvideo.zhibo.lib.common.util.common.StringUtils;
|
|
import java.util.ArrayList;
|
import java.util.Formatter;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Locale;
|
import java.util.Map;
|
|
import me.jingbin.library.adapter.BaseByViewHolder;
|
import me.jingbin.library.adapter.BaseRecyclerAdapter;
|
|
public class WatchHistoryAdapter extends BaseRecyclerAdapter<WatchHistory> {
|
|
private RequestManager glide;
|
|
private StringBuilder mFormatBuilder;
|
|
private Formatter mFormatter;
|
|
private Map<String, VideoInfo> mVideoInfos;
|
|
private List<Long> mSelectedIds;
|
|
private boolean mSelectedMode;
|
private DownloadAdapter2.IGetDeleteCallback getdeleteNumber = null;
|
|
public void setDeleteCallback(
|
DownloadAdapter2.IGetDeleteCallback getdeleteNumber) {
|
this.getdeleteNumber = getdeleteNumber;
|
}
|
|
public WatchHistoryAdapter(List<WatchHistory> historyList, Context context) {
|
super(R.layout.item_watch_history, historyList);
|
this.mFormatBuilder = new StringBuilder();
|
this.mFormatter = new Formatter(mFormatBuilder, Locale.getDefault());
|
this.mVideoInfos = new HashMap<>();
|
this.mSelectedIds = new ArrayList<>();
|
this.glide = Glide.with(context);
|
}
|
|
|
private String stringForTime(int timeMs) {
|
int totalSeconds = timeMs / 1000;
|
|
int seconds = totalSeconds % 60;
|
int minutes = (totalSeconds / 60) % 60;
|
int hours = totalSeconds / 3600;
|
|
mFormatBuilder.setLength(0);
|
if (hours > 0) {
|
return mFormatter.format("%d:%02d:%02d", hours, minutes, seconds)
|
.toString();
|
} else {
|
return mFormatter.format("%02d:%02d", minutes, seconds).toString();
|
}
|
}
|
|
public Map<String, VideoInfo> getVideoInfos() {
|
return mVideoInfos;
|
}
|
|
@Override
|
protected void bindView(BaseByViewHolder<WatchHistory> holder, WatchHistory bean, int position) {
|
|
|
if (!mSelectedMode) {
|
holder.setVisible(R.id.chb_delete, false);
|
holder.itemView.setOnClickListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (bean != null) {
|
int playingPosition = 0;
|
for (int i = 0; i < bean.getVideoInfo().getVideoDetailList()
|
.size(); i++) {
|
VideoDetailInfo item = bean.getVideoInfo()
|
.getVideoDetailList().get(i);
|
if (item.getId().equals(bean.getVideoDetailId())) {
|
playingPosition = i;
|
break;
|
}
|
}
|
|
Intent intent = new Intent(v.getContext(),
|
VideoDetailActivity.class);
|
|
intent.putExtra("video_info", bean.getVideoInfo());
|
intent.putExtra("video_detail_id", bean.getVideoDetailId());
|
intent.putExtra("playing_position", playingPosition);
|
intent.putExtra("isFromWatchHistory", true);
|
v.getContext().startActivity(intent);
|
}
|
|
}
|
});
|
|
} else {
|
holder.setVisible(R.id.chb_delete, true);
|
holder.itemView.setOnClickListener(new OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
if (mSelectedIds.contains(bean.getId())) {
|
mSelectedIds.remove(bean.getId());
|
} else {
|
mSelectedIds.add(bean.getId());
|
}
|
holder.setChecked(R.id.chb_delete, mSelectedIds.contains(bean.getId()));
|
if (getdeleteNumber != null)
|
getdeleteNumber.onGetNum(mSelectedIds.size());
|
}
|
});
|
holder.getView(R.id.chb_delete).setOnClickListener(new OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
if (mSelectedIds.contains(bean.getId())) {
|
mSelectedIds.remove(bean.getId());
|
} else {
|
mSelectedIds.add(bean.getId());
|
}
|
holder.setChecked(R.id.chb_delete, mSelectedIds.contains(bean.getId()));
|
|
if (getdeleteNumber != null)
|
getdeleteNumber.onGetNum(mSelectedIds.size());
|
}
|
});
|
holder.setChecked(R.id.chb_delete, mSelectedIds.contains(bean.getId()));
|
}
|
|
|
String subName = "";
|
for (VideoDetailInfo videoDetailInfo : bean.getVideoInfo().getVideoDetailList()) {
|
if (bean.getVideoDetailId().equals(videoDetailInfo.getId())) {
|
subName = TextUtils.isEmpty(videoDetailInfo.getTag()) ? videoDetailInfo
|
.getName() : videoDetailInfo.getTag();
|
}
|
}
|
if (StringUtils.isEmpty(bean.getVideoInfo().getName())) {
|
bean.getVideoInfo().setName(".");
|
}
|
if (subName.equalsIgnoreCase(bean.getVideoInfo().getName())) {
|
((TextView) holder.getView(R.id.tv_title)).setSingleLine(true);
|
((TextView) holder.getView(R.id.tv_title)).setEllipsize(TruncateAt.END);
|
((TextView) holder.getView(R.id.tv_title)).setText(bean.getVideoInfo().getName());
|
} else {
|
((TextView) holder.getView(R.id.tv_title)).setSingleLine(false);
|
if (StringUtils.isNumeric(subName)) {
|
subName = "第" + subName + "集";
|
}
|
((TextView) holder.getView(R.id.tv_title)).setText(bean.getVideoInfo().getName()
|
+ System.getProperty("line.separator"));
|
holder.setText(R.id.tv_watch_time, holder.itemView.getContext().getResources().getString(
|
R.string.watch_history_time, subName));
|
}
|
|
if (StringUtils.isEmpty(bean.getVideoInfo().getPicture()))
|
bean.getVideoInfo().setPicture("");
|
try {
|
glide.load(bean.getVideoInfo().getPicture())
|
.placeholder(R.drawable.ic_default_cover)
|
.error(R.drawable.ic_default_cover).into((ImageView) holder.getView(R.id.iv_cover));
|
} catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
}
|
}
|
public List<Long> getSelectedIds() {
|
return mSelectedIds;
|
}
|
|
public boolean isSelectedMode() {
|
return mSelectedMode;
|
}
|
|
public void setSelectedMode(boolean selectedMode) {
|
this.mSelectedMode = selectedMode;
|
notifyDataSetChanged();
|
}
|
|
public void selectAll(boolean isSelected) {
|
mSelectedIds.clear();
|
if (isSelected) {
|
for (WatchHistory wh : getData()) {
|
mSelectedIds.add(wh.getId());
|
}
|
} else {
|
for (WatchHistory wh : getData()) {
|
mSelectedIds.remove(wh.getId());
|
}
|
}
|
if (getdeleteNumber != null)
|
getdeleteNumber.onGetNum(mSelectedIds.size());
|
notifyDataSetChanged();
|
}
|
}
|