package com.hanju.video.app.ui.common;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import android.content.Context;
|
import android.content.Intent;
|
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.RequestManager;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.hanju.video.app.R;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
|
import com.hanju.video.app.entity.VideoInfo;
|
import com.hanju.video.app.ui.media.VideoDetailActivity;
|
import com.hanju.video.app.ui.mine.MyFavouriteActivity;
|
import com.hanju.video.app.ui.recent.DownloadAdapter2.IGetDeleteCallback;
|
|
public class ListVideoAdapter extends BaseAdapter {
|
|
public interface IGetDeleteCallback {
|
void onGetNum(int count);
|
}
|
|
private IGetDeleteCallback getdeleteNumber = null;
|
|
public void setDeleteCallback(IGetDeleteCallback getdeleteNumber) {
|
this.getdeleteNumber = getdeleteNumber;
|
}
|
|
private ImageLoader imageLoader = ImageLoader.getInstance();
|
|
private RequestManager glide;
|
|
private DisplayImageOptions options;
|
|
private List<VideoInfo> mVideoInfos;
|
|
private Context context;
|
|
private boolean mSelectedMode;
|
private List<Long> mSelectedIds;
|
private List<String> mThirdTypes;
|
|
public ListVideoAdapter(List<VideoInfo> videoInfos, Context context) {
|
super();
|
this.mVideoInfos = videoInfos;
|
this.context = context;
|
this.mSelectedIds = new ArrayList<Long>();
|
this.mThirdTypes = new ArrayList<String>();
|
this.options = new DisplayImageOptions.Builder()
|
.showImageForEmptyUri(R.drawable.ic_default_cover)
|
.showImageOnFail(R.drawable.ic_default_cover)
|
.showImageOnLoading(R.drawable.ic_default_cover)
|
.resetViewBeforeLoading(true).cacheInMemory(true)
|
.cacheOnDisk(true).imageScaleType(ImageScaleType.EXACTLY)
|
.considerExifParams(true)
|
// default
|
.displayer(new FadeInBitmapDisplayer(300)).build();
|
}
|
|
@Override
|
public int getCount() {
|
return mVideoInfos == null ? 0 : mVideoInfos.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return mVideoInfos.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(int position, View convertView, ViewGroup parent) {
|
final ViewHolder viewHolder;
|
if (convertView == null) {
|
viewHolder = new ViewHolder();
|
convertView = LayoutInflater.from(parent.getContext()).inflate(
|
R.layout.fav_item, parent, false);
|
viewHolder.iv_movie_cover = convertView
|
.findViewById(R.id.iv_cover);
|
viewHolder.tv_movie_title = convertView
|
.findViewById(R.id.tv_title);
|
viewHolder.tv_movie_rating = convertView
|
.findViewById(R.id.tv_watch_time);
|
viewHolder.fl_video_select = convertView
|
.findViewById(R.id.fl_video_select);
|
viewHolder.chb_delete = convertView
|
.findViewById(R.id.chb_delete);
|
viewHolder.btn_delete = convertView
|
.findViewById(R.id.btn_delete_download);
|
convertView.setTag(viewHolder);
|
} else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
}
|
glide = Glide.with(context);
|
VideoInfo videoInfo = (VideoInfo) getItem(position);
|
final Long id = Long.parseLong(videoInfo.getId());
|
final String thirdtype = videoInfo.getThirdType();
|
// imageLoader.displayImage(videoInfo.getPicture(),
|
// viewHolder.iv_movie_cover);// GridVideoAdapter
|
try {
|
glide.load(videoInfo.getPicture())
|
.placeholder(R.drawable.ic_default_cover)
|
.error(R.drawable.ic_default_cover)
|
.into(viewHolder.iv_movie_cover);
|
} catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
}
|
viewHolder.tv_movie_title.setText(videoInfo.getName());
|
viewHolder.tv_movie_rating.setText(StringUtils.isBlank(videoInfo
|
.getTag()) ? "" : videoInfo.getTag());
|
final VideoInfo mInfo = videoInfo;
|
if (!mSelectedMode) {
|
viewHolder.fl_video_select.setVisibility(View.GONE);
|
convertView.setOnClickListener(new OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
|
Intent intent = new Intent(v.getContext(),
|
VideoDetailActivity.class);
|
intent.putExtra("video_info", mInfo);
|
v.getContext().startActivity(intent);
|
}
|
});
|
} else {
|
viewHolder.fl_video_select.setVisibility(View.VISIBLE);
|
viewHolder.btn_delete.setVisibility(View.INVISIBLE);
|
viewHolder.chb_delete.setVisibility(View.VISIBLE);
|
convertView.setOnClickListener(new OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
if (mSelectedIds.contains(id)) {
|
mSelectedIds.remove(id);
|
mThirdTypes.remove(thirdtype);
|
} else {
|
mSelectedIds.add(id);
|
mThirdTypes.add(thirdtype);
|
}
|
if (getdeleteNumber != null)
|
getdeleteNumber.onGetNum(mSelectedIds.size());
|
viewHolder.chb_delete.setChecked(mSelectedIds.contains(id));
|
}
|
});
|
viewHolder.chb_delete.setOnClickListener(new OnClickListener() {
|
|
@Override
|
public void onClick(View v) {
|
if (mSelectedIds.contains(id)) {
|
mSelectedIds.remove(id);
|
mThirdTypes.remove(thirdtype);
|
} else {
|
mSelectedIds.add(id);
|
mThirdTypes.add(thirdtype);
|
}
|
if (getdeleteNumber != null)
|
getdeleteNumber.onGetNum(mSelectedIds.size());
|
viewHolder.chb_delete.setChecked(mSelectedIds.contains(id));
|
}
|
});
|
viewHolder.chb_delete.setChecked(mSelectedIds.contains(id));
|
}
|
|
return convertView;
|
}
|
|
private static class ViewHolder {
|
ImageView iv_movie_cover;
|
TextView tv_movie_title;
|
TextView tv_movie_rating;
|
private FrameLayout fl_video_select;
|
|
private CheckBox chb_delete;
|
|
private ImageButton btn_delete;
|
}
|
|
public List<Long> getSelectedIds() {
|
return mSelectedIds;
|
}
|
|
public List<String> getThirdTypes() {
|
return mThirdTypes;
|
}
|
|
public boolean isSelectedMode() {
|
return mSelectedMode;
|
}
|
|
public void setSelectedMode(boolean selectedMode) {
|
this.mSelectedMode = selectedMode;
|
notifyDataSetChanged();
|
}
|
|
public void selectAll() {
|
mSelectedIds.clear();
|
for (VideoInfo info : mVideoInfos) {
|
mSelectedIds.add(Long.parseLong(info.getId()));
|
mThirdTypes.add(info.getThirdType());
|
}
|
|
if (getdeleteNumber != null)
|
getdeleteNumber.onGetNum(mSelectedIds.size());
|
notifyDataSetChanged();
|
}
|
}
|