package com.jaydenxiao.androidfire.ui.news.fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import com.aspsine.irecyclerview.IRecyclerView; import com.aspsine.irecyclerview.OnLoadMoreListener; import com.aspsine.irecyclerview.OnRefreshListener; import com.aspsine.irecyclerview.universaladapter.ViewHolderHelper; import com.aspsine.irecyclerview.universaladapter.recyclerview.CommonRecycleViewAdapter; import com.aspsine.irecyclerview.widget.LoadMoreFooterView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.jaydenxiao.androidfire.R; import com.jaydenxiao.androidfire.app.AppConstant; import com.jaydenxiao.androidfire.bean.VideoData; import com.jaydenxiao.androidfire.ui.news.contract.VideosListContract; import com.jaydenxiao.androidfire.ui.news.model.VideosListModel; import com.jaydenxiao.androidfire.ui.news.presenter.VideoListPresenter; import com.jaydenxiao.common.base.BaseFragment; import com.jaydenxiao.common.commonwidget.LoadingTip; import java.util.List; import butterknife.Bind; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerManager; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; /** * des:视频fragment * Created by xsf * on 2016.09.17:30 */ public class VideosFragment extends BaseFragment<VideoListPresenter, VideosListModel> implements VideosListContract.View, OnRefreshListener, OnLoadMoreListener { @Bind(R.id.irc) IRecyclerView irc; @Bind(R.id.loadedTip) LoadingTip loadedTip; private CommonRecycleViewAdapter<VideoData> videoListAdapter; private String mVideoType; private int mStartPage=0; @Override protected int getLayoutResource() { return R.layout.framents_news; } @Override public void initPresenter() { mPresenter.setVM(this, mModel); } @Override protected void initView() { if (getArguments() != null) { mVideoType = getArguments().getString(AppConstant.VIDEO_TYPE); } irc.setLayoutManager(new LinearLayoutManager(getContext())); videoListAdapter =new CommonRecycleViewAdapter<VideoData>(getContext(),R.layout.item_video_list) { @Override public void convert(ViewHolderHelper helper, VideoData videoData) { helper.setImageRoundUrl(R.id.iv_logo,videoData.getTopicImg()); helper.setText(R.id.tv_from,videoData.getTopicName()); helper.setText(R.id.tv_play_time,String.format(getResources().getString(R.string.video_play_times), String.valueOf(videoData.getPlayCount()))); JCVideoPlayerStandard jcVideoPlayerStandard=helper.getView(R.id.videoplayer); boolean setUp = jcVideoPlayerStandard.setUp( videoData.getMp4_url(), JCVideoPlayer.SCREEN_LAYOUT_LIST, TextUtils.isEmpty(videoData.getDescription())?videoData.getTitle()+"":videoData.getDescription()); if (setUp) { Glide.with(mContext).load(videoData.getCover()) .diskCacheStrategy(DiskCacheStrategy.ALL) .centerCrop() .error(com.jaydenxiao.common.R.drawable.ic_empty_picture) .crossFade().into(jcVideoPlayerStandard.thumbImageView); } } }; irc.setAdapter(videoListAdapter); irc.setOnRefreshListener(this); irc.setOnLoadMoreListener(this); //视频监听 irc.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() { @Override public void onChildViewAttachedToWindow(View view) { } @Override public void onChildViewDetachedFromWindow(View view) { if (JCVideoPlayerManager.listener() != null) { JCVideoPlayer videoPlayer = (JCVideoPlayer) JCVideoPlayerManager.listener(); if (((ViewGroup) view).indexOfChild(videoPlayer) != -1 && videoPlayer.currentState == JCVideoPlayer.CURRENT_STATE_PLAYING) { JCVideoPlayer.releaseAllVideos(); } } } }); //数据为空才重新发起请求 if(videoListAdapter.getSize()<=0) { //发起请求 mStartPage=0; mPresenter.getVideosListDataRequest(mVideoType, mStartPage); } } @Override public void onPause() { super.onPause(); JCVideoPlayer.releaseAllVideos(); } @Override public void returnVideosListData(List<VideoData> videoDatas) { if (videoDatas != null) { mStartPage += 1; if (videoListAdapter.getPageBean().isRefresh()) { irc.setRefreshing(false); videoListAdapter.replaceAll(videoDatas); } else { if (videoDatas.size() > 0) { irc.setLoadMoreStatus(LoadMoreFooterView.Status.GONE); videoListAdapter.addAll(videoDatas); } else { irc.setLoadMoreStatus(LoadMoreFooterView.Status.THE_END); } } } } /** * 返回顶部 */ @Override public void scrolltoTop() { irc.smoothScrollToPosition(0); } @Override public void onRefresh() { videoListAdapter.getPageBean().setRefresh(true); mStartPage = 0; //发起请求 irc.setRefreshing(true); mPresenter.getVideosListDataRequest(mVideoType, mStartPage); } @Override public void onLoadMore(View loadMoreView) { videoListAdapter.getPageBean().setRefresh(false); //发起请求 irc.setLoadMoreStatus(LoadMoreFooterView.Status.LOADING); mPresenter.getVideosListDataRequest(mVideoType, mStartPage); } @Override public void showLoading(String title) { if( videoListAdapter.getPageBean().isRefresh()) { if(videoListAdapter.getSize()<=0) { loadedTip.setLoadingTip(LoadingTip.LoadStatus.loading); } } } @Override public void stopLoading() { loadedTip.setLoadingTip(LoadingTip.LoadStatus.finish); } @Override public void showErrorTip(String msg) { if( videoListAdapter.getPageBean().isRefresh()) { if(videoListAdapter.getSize()<=0) { loadedTip.setLoadingTip(LoadingTip.LoadStatus.error); loadedTip.setTips(msg); irc.setRefreshing(false); } }else{ irc.setLoadMoreStatus(LoadMoreFooterView.Status.ERROR); } } }