package com.codeest.geeknews.ui.wechat.fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import com.codeest.geeknews.R; import com.codeest.geeknews.base.RootFragment; import com.codeest.geeknews.model.bean.WXItemBean; import com.codeest.geeknews.presenter.wechat.WechatPresenter; import com.codeest.geeknews.base.contract.wechat.WechatContract; import com.codeest.geeknews.ui.wechat.adapter.WechatAdapter; import java.util.ArrayList; import java.util.List; import butterknife.BindView; /** * Created by codeest on 16/8/29. */ public class WechatMainFragment extends RootFragment<WechatPresenter> implements WechatContract.View { @BindView(R.id.view_main) RecyclerView rvWechatList; @BindView(R.id.swipe_refresh) SwipeRefreshLayout swipeRefresh; WechatAdapter mAdapter; List<WXItemBean> mList; boolean isLoadingMore = false; @Override protected void initInject() { getFragmentComponent().inject(this); } @Override protected int getLayoutId() { return R.layout.view_common_list; } @Override protected void initEventAndData() { super.initEventAndData(); mList = new ArrayList<>(); mAdapter = new WechatAdapter(mContext,mList); rvWechatList.setLayoutManager(new LinearLayoutManager(mContext)); rvWechatList.setAdapter(mAdapter); rvWechatList.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int lastVisibleItem = ((LinearLayoutManager) rvWechatList.getLayoutManager()).findLastVisibleItemPosition(); int totalItemCount = rvWechatList.getLayoutManager().getItemCount(); if (lastVisibleItem >= totalItemCount - 2 && dy > 0) { //还剩2个Item时加载更多 if(!isLoadingMore){ isLoadingMore = true; mPresenter.getMoreWechatData(); } } } }); swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { mPresenter.getWechatData(); } }); stateLoading(); mPresenter.getWechatData(); } @Override public void showContent(List<WXItemBean> list) { if(swipeRefresh.isRefreshing()) { swipeRefresh.setRefreshing(false); } stateMain(); mList.clear(); mList.addAll(list); mAdapter.notifyDataSetChanged(); } @Override public void showMoreContent(List<WXItemBean> list) { stateMain(); mList.addAll(list); mAdapter.notifyDataSetChanged(); isLoadingMore = false; } @Override public void stateError() { super.stateError(); if(swipeRefresh.isRefreshing()) { swipeRefresh.setRefreshing(false); } } }