package org.cuieney.videolife.ui.fragment.video;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.transition.Fade;
import android.transition.Slide;
import android.util.Log;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import org.cuieney.videolife.R;
import org.cuieney.videolife.common.base.BaseFragment;
import org.cuieney.videolife.common.component.EventUtil;
import org.cuieney.videolife.common.utils.LogUtil;
import org.cuieney.videolife.entity.VideoListBean;
import org.cuieney.videolife.entity.kaiyanBean.ItemListBean;
import org.cuieney.videolife.presenter.VideoHomePresenter;
import org.cuieney.videolife.presenter.contract.VideoHomeContract;
import org.cuieney.videolife.ui.adapter.VideoAdapter;
import org.cuieney.videolife.common.base.DetailTransition;
import org.cuieney.videolife.ui.widget.EndLessOnScrollListener;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
/**
* Created by cuieney on 17/2/27.
*/
public class VideoHomeFragment extends BaseFragment<VideoHomePresenter> implements VideoHomeContract.View {
@BindView(R.id.recycler)
RecyclerView recycler;
@BindView(R.id.refresh)
SwipeRefreshLayout refresh;
private String date;
private VideoAdapter adapter;
private List<ItemListBean> mVideoListBean;
public static VideoHomeFragment newInstance() {
Bundle bundle = new Bundle();
VideoHomeFragment videoFragment = new VideoHomeFragment();
videoFragment.setArguments(bundle);
return videoFragment;
}
@Override
protected void initInject() {
getFragmentComponent().inject(this);
}
@Override
protected int getLayoutId() {
return R.layout.video_home_fragment;
}
@Override
protected void initEventAndData() {
refresh.setProgressViewOffset(false, 100, 200);
refresh.setOnRefreshListener(() -> {
mPresenter.getVideoData("");
});
LinearLayoutManager layout = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
recycler.setLayoutManager(layout);
mVideoListBean = new ArrayList<>();
adapter = new VideoAdapter(getActivity(), mVideoListBean);
adapter.setOnItemClickListener((position, view, vh) -> startChildFragment(mVideoListBean.get(position), (VideoAdapter.MyHolder) vh));
recycler.setAdapter(adapter);
recycler.addOnScrollListener(new EndLessOnScrollListener(layout,0) {
@Override
public void onLoadMore() {
mPresenter.getVideoData(date);
}
});
mPresenter.getVideoData("");
}
@Override
public void showContent(VideoListBean videoListBean) {
if (refresh.isRefreshing()) {
refresh.setRefreshing(false);
mVideoListBean.clear();
adapter.clear();
adapter.addAll(videoListBean.getItemList());
recycler.setAdapter(adapter);
}else{
adapter.addAll(videoListBean.getItemList());
}
mVideoListBean.addAll(videoListBean.getItemList());
int end = videoListBean.getNextPageUrl().lastIndexOf("&num");
int start = videoListBean.getNextPageUrl().lastIndexOf("date=");
date = videoListBean.getNextPageUrl().substring(start + 5, end);
}
private void startChildFragment(ItemListBean videoListBean, VideoAdapter.MyHolder vh) {
EventUtil.sendEvent(true + "");
VideoDetailFragment fragment = VideoDetailFragment.newInstance(
videoListBean.getData());
// 这里是使用SharedElement的用例
// LOLLIPOP(5.0)系统的 SharedElement支持有 系统BUG, 这里判断大于 > LOLLIPOP
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
setExitTransition(new Fade());
fragment.setEnterTransition(new Slide());
fragment.setSharedElementReturnTransition(new DetailTransition());
fragment.setSharedElementEnterTransition(new DetailTransition());
// 25.1.0以下的support包,Material过渡动画只有在进栈时有,返回时没有;
// 25.1.0+的support包,SharedElement正常
fragment.transaction()
.addSharedElement(vh.imageView, getString(R.string.image_transition))
// .addSharedElement(((VideoAdapter.MyHolder) vh).textView,"tv")
.commit();
}
start(fragment);
}
@Override
public void error(Throwable throwable) {
Log.e("oye", "error: ", throwable);
}
}