package com.llf.common.ui.video;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import com.llf.basemodel.base.BaseFragment;
import com.llf.basemodel.commonwidget.CircleImageView;
import com.llf.basemodel.recycleview.BaseAdapter;
import com.llf.basemodel.recycleview.BaseViewHolder;
import com.llf.basemodel.recycleview.EndLessOnScrollListener;
import com.llf.basemodel.utils.ImageLoaderUtils;
import com.llf.common.R;
import com.llf.common.api.Apis;
import com.llf.common.entity.VideoEntity;
import com.llf.common.ui.video.contract.VideoContract;
import com.llf.common.ui.video.presenter.VideoPresenter;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.OnClick;
/**
* Created by llf on 2017/3/15.
* 视频
*/
public class VideoFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener, VideoContract.View {
public static VideoFragment getInstance() {
VideoFragment videoFragment = new VideoFragment();
return videoFragment;
}
@Bind(R.id.recyclerView)
RecyclerView mRecyclerView;
@Bind(R.id.refreshLayout)
SwipeRefreshLayout mRefreshLayout;
private BaseAdapter mAdapter;
private List<VideoEntity.V9LG4CHORBean> videos = new ArrayList<>();
private int pageIndex = 0;
private VideoContract.Presenter mPresenter;
private boolean mIsRefreshing = false;
@Override
protected int getLayoutId() {
return R.layout.fragment_video;
}
@Override
protected void initView() {
mPresenter = new VideoPresenter(this);
mRefreshLayout.setColorSchemeResources(R.color.colorPrimary, android.R.color.holo_red_light, android.R.color.holo_orange_light, android.R.color.holo_green_light);
mRefreshLayout.setOnRefreshListener(this);
GridLayoutManager manager = new GridLayoutManager(getActivity(), 2);
mRecyclerView.setLayoutManager(manager);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mAdapter = new BaseAdapter<VideoEntity.V9LG4CHORBean>(getActivity(), R.layout.item_video, videos) {
@Override
public void convert(BaseViewHolder viewHolder, VideoEntity.V9LG4CHORBean item) {
viewHolder.setText(R.id.title, item.getTitle());
viewHolder.setText(R.id.source, item.getVideosource());
ImageView imageView = viewHolder.getView(R.id.cover);
CircleImageView circleImageView = viewHolder.getView(R.id.topicImg);
ImageLoaderUtils.loadingImg(getActivity(), imageView, item.getCover());
ImageLoaderUtils.loadingImg(getActivity(), circleImageView, item.getTopicImg());
}
};
mAdapter.addFooterView(R.layout.layout_footer);
mAdapter.setOnItemClickLitener(new BaseAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position, BaseViewHolder viewHolder) {
if (videos.size() > 0)
VideoDetailActivity.launch(getActivity(), videos.get(position).getMp4_url(), videos.get(position).getTitle(), pageIndex);
}
@Override
public void onItemLongClick(int position) {
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addOnScrollListener(new EndLessOnScrollListener(manager) {
@Override
public void onLoadMore() {
pageIndex++;
mAdapter.setFooterVisible(View.VISIBLE);
mPresenter.loadData(Apis.HOST + Apis.Video + Apis.VIDEO_HOT_ID + "/n/" + pageIndex * 10 + "-10.html");
}
});
mRecyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (mIsRefreshing) {
return true;
} else {
return false;
}
}
});
}
@OnClick(R.id.floatBtn)
public void onViewClicked() {
mRecyclerView.smoothScrollToPosition(0);
}
@Override
protected void lazyFetchData() {
mRefreshLayout.setRefreshing(true);
mPresenter.loadData(Apis.HOST + Apis.Video + Apis.VIDEO_HOT_ID + "/n/" + pageIndex + "-10.html");
}
@Override
public void onRefresh() {
mIsRefreshing = true;
pageIndex = 0;
videos.clear();
mPresenter.loadData(Apis.HOST + Apis.Video + Apis.VIDEO_HOT_ID + "/n/" + pageIndex + "-10.html");
}
@Override
public void showLoading() {
startProgressDialog();
}
@Override
public void stopLoading() {
stopProgressDialog();
}
@Override
public void showErrorTip(String msg) {
showErrorHint(msg);
mRefreshLayout.setRefreshing(false);
}
@Override
public void returnData(List<VideoEntity.V9LG4CHORBean> datas) {
if (pageIndex == 0) {
mIsRefreshing = false;
mRefreshLayout.setRefreshing(false);
} else {
mAdapter.setFooterVisible(View.GONE);
}
videos.addAll(datas);
mAdapter.notifyDataSetChanged();
}
@Override
public void onDestroy() {
super.onDestroy();
videos.clear();
}
}