package com.jaydenxiao.androidfire.ui.news.fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import com.aspsine.irecyclerview.IRecyclerView;
import com.aspsine.irecyclerview.OnLoadMoreListener;
import com.aspsine.irecyclerview.OnRefreshListener;
import com.aspsine.irecyclerview.animation.ScaleInAnimation;
import com.aspsine.irecyclerview.widget.LoadMoreFooterView;
import com.jaydenxiao.androidfire.R;
import com.jaydenxiao.androidfire.app.AppConstant;
import com.jaydenxiao.androidfire.bean.NewsSummary;
import com.jaydenxiao.androidfire.ui.news.adapter.NewListAdapter;
import com.jaydenxiao.androidfire.ui.news.contract.NewsListContract;
import com.jaydenxiao.androidfire.ui.news.model.NewsListModel;
import com.jaydenxiao.androidfire.ui.news.presenter.NewsListPresenter;
import com.jaydenxiao.common.base.BaseFragment;
import com.jaydenxiao.common.commonwidget.LoadingTip;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
/**
* des:新闻fragment
* Created by xsf
* on 2016.09.17:30
*/
public class NewsFrament extends BaseFragment<NewsListPresenter, NewsListModel> implements NewsListContract.View, OnRefreshListener, OnLoadMoreListener {
@Bind(R.id.irc)
IRecyclerView irc;
@Bind(R.id.loadedTip)
LoadingTip loadedTip;
private NewListAdapter newListAdapter;
private List<NewsSummary> datas = new ArrayList<>();
private String mNewsId;
private String mNewsType;
private int mStartPage=0;
// 标志位,标志已经初始化完成。
private boolean isPrepared;
private boolean isVisible;
@Override
protected int getLayoutResource() {
return R.layout.framents_news;
}
@Override
public void initPresenter() {
mPresenter.setVM(this, mModel);
}
@Override
protected void initView() {
if (getArguments() != null) {
mNewsId = getArguments().getString(AppConstant.NEWS_ID);
mNewsType = getArguments().getString(AppConstant.NEWS_TYPE);
}
irc.setLayoutManager(new LinearLayoutManager(getContext()));
datas.clear();
newListAdapter = new NewListAdapter(getContext(), datas);
newListAdapter.openLoadAnimation(new ScaleInAnimation());
irc.setAdapter(newListAdapter);
irc.setOnRefreshListener(this);
irc.setOnLoadMoreListener(this);
//数据为空才重新发起请求
if(newListAdapter.getSize()<=0) {
mStartPage = 0;
mPresenter.getNewsListDataRequest(mNewsType, mNewsId, mStartPage);
}
}
@Override
public void returnNewsListData(List<NewsSummary> newsSummaries) {
if (newsSummaries != null) {
mStartPage += 20;
if (newListAdapter.getPageBean().isRefresh()) {
irc.setRefreshing(false);
newListAdapter.replaceAll(newsSummaries);
} else {
if (newsSummaries.size() > 0) {
irc.setLoadMoreStatus(LoadMoreFooterView.Status.GONE);
newListAdapter.addAll(newsSummaries);
} else {
irc.setLoadMoreStatus(LoadMoreFooterView.Status.THE_END);
}
}
}
}
/**
* 返回顶部
*/
@Override
public void scrolltoTop() {
irc.smoothScrollToPosition(0);
}
@Override
public void onRefresh() {
newListAdapter.getPageBean().setRefresh(true);
mStartPage = 0;
//发起请求
irc.setRefreshing(true);
mPresenter.getNewsListDataRequest(mNewsType, mNewsId, mStartPage);
}
@Override
public void onLoadMore(View loadMoreView) {
newListAdapter.getPageBean().setRefresh(false);
//发起请求
irc.setLoadMoreStatus(LoadMoreFooterView.Status.LOADING);
mPresenter.getNewsListDataRequest(mNewsType, mNewsId, mStartPage);
}
@Override
public void showLoading(String title) {
if( newListAdapter.getPageBean().isRefresh()) {
if(newListAdapter.getSize()<=0) {
loadedTip.setLoadingTip(LoadingTip.LoadStatus.loading);
}
}
}
@Override
public void stopLoading() {
loadedTip.setLoadingTip(LoadingTip.LoadStatus.finish);
}
@Override
public void showErrorTip(String msg) {
if( newListAdapter.getPageBean().isRefresh()) {
if(newListAdapter.getSize()<=0) {
loadedTip.setLoadingTip(LoadingTip.LoadStatus.error);
loadedTip.setTips(msg);
}
irc.setRefreshing(false);
}else{
irc.setLoadMoreStatus(LoadMoreFooterView.Status.ERROR);
}
}
}