123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- package com.edufound.reader.adapter;
- import android.app.Activity;
- import android.graphics.Rect;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.CompoundButton;
- import android.widget.Switch;
- import com.edufound.reader.R;
- import com.edufound.reader.bean.CommentListBean;
- import com.edufound.reader.bean.HttpResultBean;
- import com.edufound.reader.bean.HttpResultDataListBean;
- import com.edufound.reader.bean.UserRecordBean;
- import com.edufound.reader.cusview.AutoPollRecyclerView;
- import com.edufound.reader.cusview.RvListJzvdStd;
- import com.edufound.reader.util.Consts;
- import com.edufound.reader.util.GlideUtils;
- import com.edufound.reader.util.OkHttpClient;
- import com.edufound.reader.util.SizeUtils;
- import com.edufound.reader.videoutil.JZMediaIjk;
- import com.google.gson.reflect.TypeToken;
- import com.okhttplib.HttpInfo;
- import com.okhttplib.callback.Callback;
- import com.orhanobut.logger.Logger;
- import java.io.IOException;
- import java.util.List;
- import androidx.annotation.NonNull;
- import androidx.recyclerview.widget.LinearLayoutManager;
- import androidx.recyclerview.widget.RecyclerView;
- import cn.jzvd.JZDataSource;
- import cn.jzvd.JzvdStd;
- public class SlideVideoAdapter extends RecyclerView.Adapter<VideoHolder> {
- private LayoutInflater mLayoutInflater;
- private Activity mContext;
- private List<UserRecordBean> mListData;
- public SlideVideoAdapter(Activity context, @NonNull List<UserRecordBean> data) {
- mContext = context;
- mLayoutInflater = LayoutInflater.from(context);
- this.mListData = data;
- }
- public void addMored(List<UserRecordBean> listData) {
- mListData.addAll(listData);
- }
- @NonNull
- @Override
- public VideoHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new VideoHolder(mContext, mLayoutInflater.inflate(R.layout.adapter_item_slidevideo, parent, false));
- }
- @Override
- public void onBindViewHolder(@NonNull VideoHolder holder, int position) {
- // holder.mVideo.setUp(new JZDataSource(mListData.get(position).getUserRead().getVideoPath()), JzvdStd.SCREEN_FULLSCREEN);
- holder.mVideo.setUp(new JZDataSource(mListData.get(position).getUserRead().getVideoPath()), JzvdStd.SCREEN_FULLSCREEN, JZMediaIjk.class);
- GlideUtils.loadImageSizeKipMemoryCache(mContext, mListData.get(position).getUserRead().getCoverImg(), holder.mVideo.posterImageView);
- holder.initDanMu(mListData.get(position).getUserRead().getId());
- holder.mVideo.startPreloading();
- holder.mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
- if (b) {
- holder.mMarqueen.setVisibility(View.VISIBLE);
- holder.mMarqueen.start();
- } else {
- holder.mMarqueen.setVisibility(View.INVISIBLE);
- holder.mMarqueen.stop();
- }
- }
- });
- // holder.mVideo.posterImageView.setImageURI(Uri.parse(mListData.get(position).videoUrl));
- }
- @Override
- public void onViewDetachedFromWindow(@NonNull VideoHolder holder) {
- super.onViewDetachedFromWindow(holder);
- holder.mSwitch.setChecked(false);
- }
- @Override
- public int getItemCount() {
- return mListData.size();
- }
- @Override
- public int getItemViewType(int position) {
- return position;
- }
- }
- class VideoHolder extends RecyclerView.ViewHolder {
- public View mItemView;
- public RvListJzvdStd mVideo;
- public AutoPollRecyclerView mMarqueen;
- public Switch mSwitch;
- public Activity mContext;
- public VideoHolder(Activity context, @NonNull View itemView) {
- super(itemView);
- mContext = context;
- mItemView = itemView;
- mVideo = itemView.findViewById((R.id.slidevideo_video));
- mMarqueen = itemView.findViewById(R.id.slidevideo_video_marqueen);
- mSwitch = itemView.findViewById(R.id.slidevideo_video_switch);
- mSwitch.setChecked(false);
- if (mSwitch.isChecked()) {
- mMarqueen.setVisibility(View.VISIBLE);
- mMarqueen.start();
- } else {
- mMarqueen.setVisibility(View.INVISIBLE);
- mMarqueen.stop();
- }
- }
- public void initDanMu(String exampleId) {
- OkHttpClient.doGetAsync(mContext, new HttpInfo.Builder().setUrl(Consts.getFinalApi() + "/posts/list").addParam("columnId", exampleId).addParam("pageNo", String.valueOf(1)).addParam("pageSize", "1000"), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- HttpResultBean<HttpResultDataListBean<CommentListBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<CommentListBean>>>() {
- }.getType());
- SlideVideoDanMarqueenAdapter adapter = new SlideVideoDanMarqueenAdapter(mContext, bean.getData().getList());
- mMarqueen.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
- mMarqueen.addItemDecoration(new SpacesItemDecoration(SizeUtils.dp2px(mContext, 20)));
- mMarqueen.setAdapter(adapter);
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("获取弹幕失败:" + info.getRetDetail());
- }
- });
- }
- }
- class SpacesItemDecoration extends RecyclerView.ItemDecoration {
- private int space;
- public SpacesItemDecoration(int space) {
- this.space = space;
- }
- @Override
- public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
- outRect.left = space;
- outRect.right = space;
- // outRect.bottom = space;
- // Add top margin only for the first item to avoid double space between items
- }
- }
|