package com.king.tv.mvp.fragment;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.GridLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.jude.easyrecyclerview.EasyRecyclerView;
import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter;
import com.jude.easyrecyclerview.decoration.SpaceDecoration;
import com.king.base.util.LogUtils;
import com.king.base.util.StringUtils;
import com.king.base.util.SystemUtils;
import com.king.tv.R;
import com.king.tv.bean.LiveInfo;
import com.king.tv.bean.P;
import com.king.tv.mvp.adapter.EasyLiveAdapter;
import com.king.tv.mvp.base.BaseFragment;
import com.king.tv.mvp.presenter.LiveListPresenter;
import com.king.tv.mvp.view.ILiveListView;
import com.king.tv.util.DensityUtil;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
/**
* @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a>
* @since 2017/2/21
*/
public class LiveListFragment extends BaseFragment<ILiveListView, LiveListPresenter> implements ILiveListView {
View loadMore;
TextView tvEmpty;
TextView tvTips;
@BindView(R.id.easyRecyclerView)
EasyRecyclerView easyRecyclerView;
EasyLiveAdapter easyLiveAdapter;
List<LiveInfo> listData;
private String slug;
private boolean isSearch;
private int page;
private String key;
private boolean isMore;
public static LiveListFragment newInstance(String slug) {
return newInstance(slug,false);
}
public static LiveListFragment newInstance(String slug,boolean isSearch) {
Bundle args = new Bundle();
LiveListFragment fragment = new LiveListFragment();
fragment.slug = slug;
fragment.isSearch = isSearch;
fragment.setArguments(args);
return fragment;
}
@Override
public int getRootViewId() {
return R.layout.fragment_live_list;
}
@Override
public void initUI() {
tvTips = (TextView) easyRecyclerView.findViewById(R.id.tvTips);
tvEmpty = (TextView) easyRecyclerView.findViewById(R.id.tvEmpty);
SpaceDecoration spaceDecoration = new SpaceDecoration(DensityUtil.dp2px(context,6));
easyRecyclerView.addItemDecoration(spaceDecoration);
// recyclerView.setRefreshingColor(R.color.colorPrimary);
easyRecyclerView.setRefreshingColorResources(R.color.progress_color);
listData = new ArrayList<>();
easyLiveAdapter = new EasyLiveAdapter(context,listData,isSearch);
easyLiveAdapter.setNotifyOnChange(false);
GridLayoutManager gridLayoutManager = new GridLayoutManager(context,2);
gridLayoutManager.setSpanSizeLookup(easyLiveAdapter.obtainGridSpanSizeLookUp(2));
easyRecyclerView.setLayoutManager(gridLayoutManager);
easyRecyclerView.setAdapter(easyLiveAdapter);
easyRecyclerView.setRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if(isSearch){
if(!StringUtils.isBlank(key)){
page = 0;
getPresenter().getLiveListByKey(key,page);
}
}else{
getPresenter().getLiveList(slug);
}
}
});
if(isSearch){
loadMore = LayoutInflater.from(context).inflate(R.layout.load_more,null);
easyLiveAdapter.setMore(loadMore, new RecyclerArrayAdapter.OnMoreListener() {
@Override
public void onMoreShow() {
if(isMore){
if(loadMore!=null){
loadMore.setVisibility(View.VISIBLE);
}
getPresenter().getLiveListByKey(key,page);
}
}
@Override
public void onMoreClick() {
}
});
}
easyLiveAdapter.setOnItemClickListener(new RecyclerArrayAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
startRoom(easyLiveAdapter.getItem(position));
}
});
}
public void search(String key,int page){
this.key = key;
this.page = page;
getPresenter().getLiveListByKey(key,page);
}
@Override
public void initData() {
if(!isSearch){
easyRecyclerView.showProgress();
getPresenter().getLiveList(slug);
}
}
@Override
public LiveListPresenter createPresenter() {
return new LiveListPresenter(getApp());
}
public void refreshView(){
easyLiveAdapter.notifyDataSetChanged();
easyRecyclerView.setRefreshing(false);
if(easyLiveAdapter.getCount()==0){
if(isSearch){
if(SystemUtils.isNetWorkActive(context)){
tvEmpty.setText(R.string.can_not_find_relevant_content);
}else{
tvTips.setText(R.string.network_unavailable);
}
}else{
tvEmpty.setText(R.string.swipe_down_to_refresh);
}
easyRecyclerView.showEmpty();
}
if(isSearch){
if(easyLiveAdapter.getCount()>= (page+1) * P.DEFAULT_SIZE){
page++;
isMore = true;
}else {
if(loadMore!=null){
loadMore.setVisibility(View.GONE);
}
isMore = false;
}
}
}
@Override
public void onGetLiveList(List<LiveInfo> list) {
// toSetList(listData,list,false);
easyLiveAdapter.clear();
easyLiveAdapter.addAll(list);
refreshView();
}
@Override
public void onGetMoreLiveList(List<LiveInfo> list) {
easyLiveAdapter.addAll(list);
refreshView();
}
@Override
public void showProgress() {
}
@Override
public void onCompleted() {
easyRecyclerView.setRefreshing(false);
}
@Override
public void onError(Throwable e) {
LogUtils.w(e);
if(SystemUtils.isNetWorkActive(context)){
tvTips.setText(R.string.page_load_failed);
}else{
tvTips.setText(R.string.network_unavailable);
}
easyRecyclerView.showError();
}
}