package com.weikou.beibeivideo.ui.recent;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.text.TextUtils.TruncateAt;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.ViewGroup;
|
import android.widget.BaseAdapter;
|
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.request.RequestOptions;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.lcjian.library.util.glide.GlideRoundTransform;
|
import com.lcjian.library.widget.RatioLayout;
|
import com.weikou.beibeivideo.R;
|
import com.weikou.beibeivideo.entity.VideoInfo;
|
import com.weikou.beibeivideo.entity.vo.WatchHistoryVO;
|
import com.weikou.beibeivideo.ui.media.VideoDetailActivity2;
|
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Set;
|
|
public class WatchHistoryAdapter extends BaseAdapter {
|
|
private List<WatchHistoryVO> voList;
|
private Context context;
|
|
private Set<String> mSelectedIds = new HashSet<>();
|
|
private boolean mSelectedMode;
|
private DownloadAdapter2.IGetDeleteCallback getdeleteNumber = null;
|
|
public void setDeleteCallback(
|
DownloadAdapter2.IGetDeleteCallback getdeleteNumber) {
|
this.getdeleteNumber = getdeleteNumber;
|
}
|
|
public WatchHistoryAdapter(Context context, List<WatchHistoryVO> voList) {
|
this.voList = voList;
|
this.context = context;
|
}
|
|
private void bindView(ViewHolder viewHolder, int position,
|
VideoInfo videoInfo) {
|
String subName = (position + 1) + "";
|
if (subName.equalsIgnoreCase(videoInfo.getName())) {
|
viewHolder.tv_title.setSingleLine(true);
|
viewHolder.tv_title.setEllipsize(TruncateAt.END);
|
viewHolder.tv_title.setText(videoInfo.getName());
|
} else {
|
viewHolder.tv_title.setSingleLine(false);
|
if (StringUtils.isNumeric(subName)) {
|
subName = "第" + subName + "集";
|
}
|
viewHolder.tv_title.setText(videoInfo.getName()
|
+ System.getProperty("line.separator"));
|
viewHolder.tv_watch_time.setText(context.getResources().getString(
|
R.string.watch_history_time, subName));
|
}
|
|
if (StringUtils.isEmpty(videoInfo.getPicture()))
|
videoInfo.setPicture("");
|
viewHolder.rl_picture.setTag(videoInfo.getPicture());
|
viewHolder.rl_picture.post(new Runnable() {
|
@Override
|
public void run() {
|
try {
|
Glide.with(context).load(viewHolder.rl_picture.getTag() + "").apply(new RequestOptions().centerCrop()).transform(new GlideRoundTransform(context, 6))
|
.placeholder(R.drawable.shape_video_list_cover_placeholder).into(viewHolder.iv_cover);
|
} catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
}
|
}
|
});
|
|
}
|
|
private void getVideoDetail(WatchHistoryVO vo,
|
final ViewHolder viewHolder) {
|
viewHolder.tv_title.setTag(vo.getId());
|
VideoInfo videoInfo = vo.getVideo();
|
if (videoInfo != null) {
|
bindView(viewHolder, vo.getPosition(), videoInfo);
|
}
|
}
|
|
@Override
|
public int getCount() {
|
return voList == null ? 0 : voList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return voList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(int position, View convertView, ViewGroup parent) {
|
final WatchHistoryVO vo = voList.get(position);
|
|
View view = LayoutInflater.from(parent.getContext()).inflate(
|
R.layout.watch_history_item, parent, false);
|
|
if (view.getTag() == null) {
|
ViewHolder holder = new ViewHolder();
|
holder.iv_cover = view.findViewById(R.id.iv_cover);
|
holder.tv_title = view.findViewById(R.id.tv_title);
|
holder.tv_watch_time = view.findViewById(R.id.tv_watch_time);
|
holder.btn_delete = view
|
.findViewById(R.id.btn_delete_download);
|
holder.chb_delete = view.findViewById(R.id.chb_delete);
|
holder.fl_video_select = view
|
.findViewById(R.id.fl_video_select);
|
holder.rl_picture = view
|
.findViewById(R.id.rl_picture);
|
view.setTag(holder);
|
}
|
|
final ViewHolder holder = (ViewHolder) view.getTag();
|
|
//非编辑模式
|
if (!mSelectedMode) {
|
holder.fl_video_select.setVisibility(View.GONE);
|
view.setOnClickListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
VideoInfo videoInfo = vo.getVideo();
|
if (videoInfo != null) {
|
int playingPosition = vo.getPosition();
|
|
Intent intent = new Intent(v.getContext(),
|
VideoDetailActivity2.class);
|
VideoInfo info = new VideoInfo();
|
info.setId(videoInfo.getId());
|
info.setShare(videoInfo.getShare());
|
info.setThirdType(videoInfo.getThirdType());
|
intent.putExtra("video_info", info);
|
intent.putExtra("playing_position", playingPosition);
|
intent.putExtra("isFromWatchHistory", true);
|
intent.putExtra("from", "watchHistory");
|
v.getContext().startActivity(intent);
|
}
|
|
}
|
});
|
selectAll(false);
|
holder.fl_video_select.setVisibility(View.GONE);
|
} else {
|
holder.fl_video_select.setVisibility(View.VISIBLE);
|
view.setOnClickListener(new OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
if (mSelectedIds.contains(vo.getId())) {
|
mSelectedIds.remove(vo.getId());
|
} else {
|
mSelectedIds.add(vo.getId());
|
}
|
holder.chb_delete.setChecked(mSelectedIds.contains(vo.getId()));
|
if (getdeleteNumber != null)
|
getdeleteNumber.onGetNum(mSelectedIds.size());
|
}
|
});
|
holder.chb_delete.setOnClickListener(new OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
if (mSelectedIds.contains(vo.getId())) {
|
mSelectedIds.remove(vo.getId());
|
} else {
|
mSelectedIds.add(vo.getId());
|
}
|
holder.chb_delete.setChecked(mSelectedIds.contains(vo.getId()));
|
if (getdeleteNumber != null)
|
getdeleteNumber.onGetNum(mSelectedIds.size());
|
}
|
});
|
holder.chb_delete.setChecked(mSelectedIds.contains(vo.getId()));
|
}
|
holder.tv_title.setText("");
|
getVideoDetail(vo,
|
holder);
|
|
|
return view;
|
}
|
|
private static class ViewHolder {
|
ImageView iv_cover;
|
TextView tv_title;
|
TextView tv_watch_time;
|
ImageButton btn_delete;
|
CheckBox chb_delete;
|
FrameLayout fl_video_select;
|
RatioLayout rl_picture;
|
}
|
|
public Set<String> 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 (WatchHistoryVO vo : voList) {
|
vo.setSelected(true);
|
mSelectedIds.add(vo.getId());
|
}
|
|
} else {
|
for (WatchHistoryVO vo : voList) {
|
vo.setSelected(false);
|
}
|
}
|
if (getdeleteNumber != null)
|
getdeleteNumber.onGetNum(mSelectedIds.size());
|
notifyDataSetChanged();
|
}
|
}
|