package com.example.qyh.joe.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.app.Fragment;
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.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.qyh.joe.R;
import com.example.qyh.joe.adapter.FirstAdapter;
import com.example.qyh.joe.bean.DataBean;
import com.example.qyh.joe.commons.Urls;
import com.example.qyh.joe.presenter.FirstFragmentImpl;
import com.example.qyh.joe.presenter.FirstPresenter;
import com.example.qyh.joe.activity.FirstDetilActivity;
import com.example.qyh.joe.view.FirstView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by qyh on 2016/8/5.
*/
public class FirstListFragment extends Fragment implements FirstView, SwipeRefreshLayout.OnRefreshListener {
private RecyclerView mRecyclerView;
private SwipeRefreshLayout mSwipeRefreshWidget;
private int type= FirstFragment.ONE;
private FirstPresenter firstPresenter;
private LinearLayoutManager mLayoutManger;
private FirstAdapter mAdapter;
private int pageIndex=0;
private ArrayList<DataBean> mData;
private FloatingActionButton fa_firstlist;
public static FirstListFragment newInstance(int type) {
Bundle bundle = new Bundle();
FirstListFragment fragment = new FirstListFragment();
bundle.putInt("type", type);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
firstPresenter = new FirstFragmentImpl(this);
type = getArguments().getInt("type");
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.firstlist_fragment, null);
initView(view);
onRefresh();
return view;
}
@Override
public void showProgress() {
mSwipeRefreshWidget.setRefreshing(true);
}
@Override
public void hideProgress() {
mSwipeRefreshWidget.setRefreshing(false);
}
@Override
public void addData(List<DataBean> mlist) {
if(null==mData){
mData = new ArrayList<>();
}
mData.addAll(mlist);
if(pageIndex==0){
mAdapter.setData(mData);
}else{
//没有加载更多的数据时候,,隐藏加载更多的布局
if(mlist.size()==0||mlist==null){
mAdapter.isShowFooter(false);
}
mAdapter.notifyDataSetChanged();
}
pageIndex += Urls.PAZE_SIZE;
}
//当没有网络或者加载失败的时候,隐藏进度,自动弹出提示框
@Override
public void showLoadFail() {
if(pageIndex==0){
mAdapter.isShowFooter(false);
mAdapter.notifyDataSetChanged();
}
View view = getActivity() == null ? mRecyclerView.getRootView() : getActivity().findViewById(R.id.drawer_layout);
Snackbar.make(view,"数据加载失败",Snackbar.LENGTH_SHORT).show();
}
private void initView(View view) {
fa_firstlist = (FloatingActionButton) view.findViewById(R.id.fa_firstlist);
mSwipeRefreshWidget = (SwipeRefreshLayout) view.findViewById(R.id.swipe_refresh_widget);
mSwipeRefreshWidget.setColorSchemeResources(R.color.colorPrimary,
R.color.colorPrimaryDark, R.color.colorAccent,
R.color.colorAccent);
mSwipeRefreshWidget.setOnRefreshListener(this);
mRecyclerView = (RecyclerView) view.findViewById(R.id.recycle_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManger = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManger);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mAdapter = new FirstAdapter(getActivity());
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(mOnItemClickListener);
mRecyclerView.addOnScrollListener(mOnScrollListener);
fa_firstlist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
gotoTop(0);
}
});
}
//点击滚动到列表的最顶端
private void gotoTop(int position) {
mRecyclerView.scrollToPosition(position);
}
//列表下拉刷新监听事件
public RecyclerView.OnScrollListener mOnScrollListener=new RecyclerView.OnScrollListener(){
private int mLastVisibleItemPosition;//最后一个角标位置
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
mLastVisibleItemPosition = mLayoutManger.findLastVisibleItemPosition();
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//正在滚动
if(newState==RecyclerView.SCROLL_STATE_IDLE&&mLastVisibleItemPosition+1==mAdapter.getItemCount()
&&mAdapter.isShowFooter()){
firstPresenter.loadData(type,pageIndex+Urls.PAZE_SIZE);
}
}
};
//刷新
@Override
public void onRefresh() {
// System.out.println("onRefresh=================");
pageIndex=0;
if(null!=mData){
mData.clear();
}
firstPresenter.loadData(type,pageIndex);
}
//FirstAdapter点击,跳转到新闻详情界面
private FirstAdapter.OnItemClickListener mOnItemClickListener=new FirstAdapter.OnItemClickListener(){
@Override
public void onItemClick(View view, int position) {
DataBean data = mAdapter.getItem(position);
System.out.println("点击的数据======" + data.getTitle());
Intent intent = new Intent(getActivity(), FirstDetilActivity.class);
intent.putExtra("news", data);
View intoView = view.findViewById(R.id.ivNews);
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(),
intoView, getString(R.string.transition_news_img));
ActivityCompat.startActivity(getActivity(),intent,options.toBundle());
}
};
}