package com.looklook.xinghongfei.looklook.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import com.looklook.xinghongfei.looklook.R; import com.looklook.xinghongfei.looklook.adapter.MeiziAdapter; import com.looklook.xinghongfei.looklook.bean.meizi.Gank; import com.looklook.xinghongfei.looklook.bean.meizi.Meizi; import com.looklook.xinghongfei.looklook.presenter.implPresenter.MeiziPresenterImpl; import com.looklook.xinghongfei.looklook.presenter.implView.IMeiziFragment; import com.looklook.xinghongfei.looklook.util.Once; import com.looklook.xinghongfei.looklook.widget.WrapContentLinearLayoutManager; import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by xinghongfei on 16/8/20. */ public class MeiziFragment extends BaseFragment implements IMeiziFragment { @BindView(R.id.recycle_meizi) RecyclerView mRecycleMeizi; @BindView(R.id.prograss) ProgressBar mPrograss; private WrapContentLinearLayoutManager linearLayoutManager; private MeiziAdapter meiziAdapter; private RecyclerView.OnScrollListener loadmoreListener; private MeiziPresenterImpl mMeiziPresenter; private boolean isLoading; private int index = 1; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.meizi_fragment_layout, container, false); ButterKnife.bind(this, view); return view; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { mMeiziPresenter = new MeiziPresenterImpl(getContext(), this); meiziAdapter = new MeiziAdapter(getContext()); linearLayoutManager = new WrapContentLinearLayoutManager(getContext()); loadmoreListener = new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if (dy > 0) //向下滚动 { int visibleItemCount = linearLayoutManager.getChildCount(); int totalItemCount = linearLayoutManager.getItemCount(); int pastVisiblesItems = linearLayoutManager.findFirstVisibleItemPosition(); if (!isLoading && (visibleItemCount + pastVisiblesItems) >= totalItemCount) { isLoading = true; index += 1; loadMoreDate(); } } } }; mRecycleMeizi.setLayoutManager(linearLayoutManager); mRecycleMeizi.setAdapter(meiziAdapter); mRecycleMeizi.addOnScrollListener(loadmoreListener); new Once(getContext()).show("tip_guide_6", new Once.OnceCallback() { @Override public void onOnce() { Snackbar.make(mRecycleMeizi, getString(R.string.meizitips), Snackbar.LENGTH_INDEFINITE) .setAction(R.string.meiziaction, new View.OnClickListener() { @Override public void onClick(View view) { } }) .show(); } }); mRecycleMeizi.setItemAnimator(new DefaultItemAnimator()); loadDate(); super.onViewCreated(view, savedInstanceState); } private void loadDate() { if (meiziAdapter.getItemCount() > 0) { meiziAdapter.clearData(); } mMeiziPresenter.getMeiziData(index); } private void loadMoreDate() { meiziAdapter.loadingStart(); mMeiziPresenter.getMeiziData(index); } @Override public void onDestroyView() { super.onDestroyView(); mMeiziPresenter.unsubscrible(); } @Override public void updateMeiziData(ArrayList<Meizi> list) { meiziAdapter.loadingfinish(); isLoading = false; meiziAdapter.addItems(list); mMeiziPresenter.getVedioData(index); } @Override public void updateVedioData(ArrayList<Gank> list) { meiziAdapter.addVedioDes(list); } @Override public void showProgressDialog() { mPrograss.setVisibility(View.VISIBLE); } @Override public void hidProgressDialog() { mPrograss.setVisibility(View.INVISIBLE); } @Override public void showError(String error) { mPrograss.setVisibility(View.INVISIBLE); if (mRecycleMeizi != null) { Snackbar.make(mRecycleMeizi, getString(R.string.snack_infor), Snackbar.LENGTH_SHORT).setAction("重试", new View.OnClickListener() { @Override public void onClick(View v) { mMeiziPresenter.getMeiziData(index); } }).show(); } } }