package com.llf.common.ui.news.classfi;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.MotionEvent;
import android.view.View;
import com.llf.basemodel.base.BaseFragment;
import com.llf.basemodel.image.BigImagePagerActivity;
import com.llf.basemodel.recycleview.BaseViewHolder;
import com.llf.basemodel.recycleview.DefaultItemDecoration;
import com.llf.basemodel.recycleview.EndLessOnScrollListener;
import com.llf.common.R;
import com.llf.common.api.Apis;
import com.llf.common.entity.NewsEntity;
import com.llf.common.ui.news.NewsFragment;
import com.llf.common.ui.news.adapter.NewsAdapter;
import com.llf.common.ui.news.contract.NewsContract;
import com.llf.common.ui.news.detail.NewsDetailActivity;
import com.llf.common.ui.news.presenter.NewsPresenter;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
/**
* Created by llf on 2017/3/15.
* 新闻头条
*/
public class NewsClassfiFragment extends BaseFragment implements NewsContract.View, SwipeRefreshLayout.OnRefreshListener {
public static NewsClassfiFragment newInstance(int type) {
Bundle bundle = new Bundle();
NewsClassfiFragment fragment = new NewsClassfiFragment();
bundle.putInt("type", type);
fragment.setArguments(bundle);
return fragment;
}
@Bind(R.id.recyclerView)
RecyclerView mRecyclerView;
@Bind(R.id.refreshLayout)
SwipeRefreshLayout mRefreshLayout;
private NewsAdapter mAdapter;
private NewsContract.Presenter mPresenter;
private int pageIndex = 0;
private int type = NewsFragment.ONE;
private List<NewsEntity> newDatas = new ArrayList<>();
private ArrayList<String> images = new ArrayList<>();
private boolean mIsRefreshing = false;
@Override
protected int getLayoutId() {
return R.layout.fragment_news_classfi;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
type = getArguments().getInt("type");
}
@Override
protected void initView() {
mPresenter = new NewsPresenter(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);
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
manager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(manager);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mRecyclerView.addItemDecoration(new DefaultItemDecoration(getActivity()));
mAdapter = new NewsAdapter(newDatas, getActivity());
mAdapter.addFooterView(R.layout.layout_footer);
mAdapter.setOnItemClickLitener(new NewsAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position, BaseViewHolder viewHolder) {
if (newDatas.get(position).getImgextra() == null) {
NewsEntity entity = newDatas.get(position);
Intent intent = new Intent(getActivity(), NewsDetailActivity.class);
intent.putExtra("news", entity);
startActivity(intent);
// NewsDetailActivity.Launch(getActivity(),viewHolder,entity);
} else {
images.clear();
for (int i = 0; i < newDatas.get(position).getImgextra().size(); i++) {
images.add(newDatas.get(position).getImgextra().get(i).getImgsrc());
}
BigImagePagerActivity.startImagePagerActivity(getActivity(), images, 0);
}
}
});
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addOnScrollListener(new EndLessOnScrollListener(manager) {
@Override
public void onLoadMore() {
pageIndex += Apis.PAZE_SIZE;
mAdapter.setFooterVisible(View.VISIBLE);
mPresenter.loadData(type, pageIndex);
}
});
mRecyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (mIsRefreshing) {
return true;
} else {
return false;
}
}
});
}
@Override
protected void lazyFetchData() {
mRefreshLayout.setRefreshing(true);
mPresenter.loadData(type, pageIndex);
}
@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<NewsEntity> datas) {
if (pageIndex == 0) {
mRefreshLayout.setRefreshing(false);
mIsRefreshing = false;
} else {
mAdapter.setFooterVisible(View.GONE);
}
newDatas.addAll(datas);
mAdapter.notifyDataSetChanged();
}
@Override
public void onRefresh() {
mIsRefreshing = true;
pageIndex = 0;
newDatas.clear();
mPresenter.loadData(type, pageIndex);
}
@Override
public void onDestroy() {
super.onDestroy();
newDatas.clear();
images.clear();
}
public void slideToTop() {
mRecyclerView.smoothScrollToPosition(0);
}
}