package com.mathiasluo.designer.view.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.mathiasluo.designer.R; import com.mathiasluo.designer.adpter.ShotAdapter; import com.mathiasluo.designer.adpter.ViewPagerAdapter; import com.mathiasluo.designer.bean.Shot; import com.mathiasluo.designer.bean.User; import com.mathiasluo.designer.presenter.ShotsPresenter; import com.mathiasluo.designer.utils.LogUtils; import com.mathiasluo.designer.view.IView.IMainActivity; import com.mathiasluo.designer.view.IView.IShotsFragment; import com.mathiasluo.designer.view.activity.MainActivity; import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; /** * Created by MathiasLuo on 2016/3/10. */ public class ShotsFragment extends BaseFragment<ShotsFragment, ShotsPresenter> implements IShotsFragment<Shot> { @Bind(R.id.toolbar) Toolbar mToolbar; @Bind(R.id.content_recyclerView) RecyclerView mRecyclerView; @Bind(R.id.content_swipe) SwipeRefreshLayout mRefreshLayout; private int lastVisableItem; private RecyclerView.LayoutManager mLayoutManager; private ShotAdapter mShotAdapter; private List<Shot> dataList; @Override protected ShotsPresenter creatPresenter() { return new ShotsPresenter(); } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.main_fragment_content_shots, container, false); ButterKnife.bind(this, rootView); return rootView; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); init(); mPresenter.loadDataFromReaml(); } public void init() { ((IMainActivity) getActivity()).addDrawerListener(mToolbar); mRecyclerView.setLayoutManager(mLayoutManager = new LinearLayoutManager(getActivity())); //下拉刷新 mRefreshLayout.setOnRefreshListener(() -> { mPresenter.requestNewDate(); mPresenter.updataUserInfo(); showProgress(); }); //上拉加载 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); lastVisableItem = ((LinearLayoutManager) mLayoutManager).findLastCompletelyVisibleItemPosition(); } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); LogUtils.e("lastVisableItem=" + lastVisableItem + "\n" + "mShotAdapter.mDataList.size()=" + mShotAdapter.mDataList.size()); if (newState == RecyclerView.SCROLL_STATE_IDLE && lastVisableItem == mShotAdapter.mDataList.size()) { mPresenter.requestDate(); } } }); } @Override public void showShots(List<Shot> list, int current_page) { if (dataList == null) { dataList = list; mShotAdapter = new ShotAdapter(list, getActivity()); mRecyclerView.setAdapter(mShotAdapter); } else { mShotAdapter.addMoreData(list, current_page); } } @Override public void showProgress() { mRefreshLayout.setRefreshing(true); } @Override public void closeProgress() { mRefreshLayout.setRefreshing(false); } @Override public void uploadUserInfo(User user) { ((MainActivity) getActivity()).loadUerInfo(user); } @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this); } @Override public void onResume() { super.onResume(); LogUtils.e("FragmentShots----->>> onResume"); if (ShotAdapter.mDataList != null && ViewPagerAdapter.mCurrentPosition != -1) { mShotAdapter.notifyDataSetChanged(); mRecyclerView.scrollToPosition(ViewPagerAdapter.mCurrentPosition); } } }