package com.yuyh.sprintnba.ui.fragment;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import com.cjj.MaterialRefreshLayout;
import com.cjj.MaterialRefreshListener;
import com.yuyh.library.utils.DimenUtils;
import com.yuyh.sprintnba.R;
import com.yuyh.sprintnba.app.Constant;
import com.yuyh.sprintnba.base.BaseLazyFragment;
import com.yuyh.sprintnba.base.BaseWebActivity;
import com.yuyh.sprintnba.http.bean.player.StatsRank;
import com.yuyh.sprintnba.support.OnListItemClickListener;
import com.yuyh.sprintnba.support.SpaceItemDecoration;
import com.yuyh.sprintnba.support.SupportRecyclerView;
import com.yuyh.sprintnba.ui.adapter.StatsRankAdapter;
import com.yuyh.sprintnba.ui.presenter.impl.StatsRankPresenterImpl;
import com.yuyh.sprintnba.ui.view.StatsRankView;
import com.yuyh.sprintnba.widget.ToggleLayout;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import butterknife.InjectView;
/**
* @author yuyh.
* @date 16/6/5.
*/
public class StatsRankFragment extends BaseLazyFragment implements StatsRankView, ToggleLayout.OnToggleListener {
@InjectView(R.id.tlTab)
ToggleLayout tlTab;
@InjectView(R.id.tlStat)
ToggleLayout tlStat;
@InjectView(R.id.refresh)
MaterialRefreshLayout materialRefreshLayout;
@InjectView(R.id.recyclerview)
SupportRecyclerView recyclerView;
@InjectView(R.id.emptyView)
View emptyView;
private StatsRankPresenterImpl presenter;
private Map<String, Constant.TabType> tab;
private Map<String, Constant.StatType> stat;
private Constant.TabType curTab = Constant.TabType.EVERYDAY;
private Constant.StatType curStat = Constant.StatType.POINT;
private List<StatsRank.RankItem> mList = new ArrayList<>();
private StatsRankAdapter adapter;
@Override
protected void onCreateViewLazy(Bundle savedInstanceState) {
super.onCreateViewLazy(savedInstanceState);
setContentView(R.layout.fragment_stats_rank);
initView();
presenter = new StatsRankPresenterImpl(mActivity, this);
presenter.initialized();
}
private void initView() {
adapter = new StatsRankAdapter(mList, mActivity, R.layout.item_list_stats_rank);
adapter.setOnItemClickListener(new OnListItemClickListener<StatsRank.RankItem>() {
@Override
public void onItemClick(View view, int position, StatsRank.RankItem data) {
BaseWebActivity.start(mActivity, data.playerUrl, data.playerName, true, true);
}
});
recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
recyclerView.setAdapter(adapter);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.addItemDecoration(new SpaceItemDecoration(DimenUtils.dpToPxInt(2)));
tlStat.setOnToggleListener(this);
tlTab.setOnToggleListener(this);
materialRefreshLayout.setLoadMore(false);
materialRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {
@Override
public void onRefresh(MaterialRefreshLayout materialRefreshLayout) {
presenter.requestStatsRank(curStat, curTab);
}
});
}
@Override
public void showStatsRank(Map<String, Constant.TabType> tab, Map<String, Constant.StatType> stat) {
this.tab = tab;
this.stat = stat;
String[] tabKey = tab.keySet().toArray(new String[]{});
tlTab.setItem(tabKey);
String[] statKey = stat.keySet().toArray(new String[]{});
tlStat.setItem(statKey);
toggle(0);
}
@Override
public void showStatList(List<StatsRank.RankItem> list) {
mList.clear();
mList.addAll(list);
complete();
}
@Override
public void toggle(int position) {
curStat = stat.get(tlStat.getCurrentItem());
curTab = tab.get(tlTab.getCurrentItem());
presenter.requestStatsRank(curStat, curTab);
}
private void complete() {
recyclerView.setEmptyView(emptyView);
adapter.notifyDataSetChanged();
materialRefreshLayout.finishRefresh();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
hideLoadingDialog();
}
}, 1000);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && mActivity != null) {
mActivity.invalidateOptionsMenu();
}
}
@Override
protected void onDestroyViewLazy() {
super.onDestroyViewLazy();
}
@Override
public void showLoading(String msg) {
showLoadingDialog();
}
@Override
public void hideLoading() {
hideLoading();
}
@Override
public void showError(String msg) {
hideLoading();
complete();
}
}