package com.github.jdsjlzx.util; import android.app.Activity; import android.app.Fragment; import android.support.v7.widget.RecyclerView; import android.view.View; import com.github.jdsjlzx.recyclerview.LuRecyclerViewAdapter; import com.github.jdsjlzx.view.LoadingFooter; /** * 分页展示数据时,RecyclerView的FooterView State 操作工具类 * RecyclerView一共有几种State:Normal/Loading/Error/TheEnd * @author lizhixian * @time 16/9/10 09:56 */ @Deprecated public class LuRecyclerViewStateUtils { /** * 设置LuRecyclerViewAdapter的FooterView State * * @param instance context * @param recyclerView recyclerView * @param pageSize 分页展示时,recyclerView每一页的数量 * @param state FooterView State * @param errorListener FooterView处于Error状态时的点击事件 */ public static void setFooterViewState(Activity instance, RecyclerView recyclerView, int pageSize, LoadingFooter.State state, View.OnClickListener errorListener) { if (instance == null || instance.isFinishing()) { return; } RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter == null || !(outerAdapter instanceof LuRecyclerViewAdapter)) { return; } LuRecyclerViewAdapter luRecyclerViewAdapter = (LuRecyclerViewAdapter) outerAdapter; //只有一页,不显示FooterView if (luRecyclerViewAdapter.getInnerAdapter().getItemCount() < pageSize) { return; } LoadingFooter footerView; //已经有footerView了 if (luRecyclerViewAdapter.getFooterViewsCount() > 0) { footerView = (LoadingFooter) luRecyclerViewAdapter.getFooterView(); footerView.setState(state); footerView.setVisibility(View.VISIBLE); if (state == LoadingFooter.State.NetWorkError) { footerView.setOnClickListener(errorListener); } } recyclerView.scrollToPosition(luRecyclerViewAdapter.getItemCount() - 1); } /** * 设置LuRecyclerViewAdapter的FooterView State * * @param instance context * @param recyclerView recyclerView * @param pageSize 分页展示时,recyclerView每一页的数量 * @param state FooterView State * @param errorListener FooterView处于Error状态时的点击事件 */ public static void setFooterViewState(Fragment instance, RecyclerView recyclerView, int pageSize, LoadingFooter.State state, View.OnClickListener errorListener) { if (instance == null || instance.isDetached()) { return; } RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter == null || !(outerAdapter instanceof LuRecyclerViewAdapter)) { return; } LuRecyclerViewAdapter luRecyclerViewAdapter = (LuRecyclerViewAdapter) outerAdapter; //只有一页,不显示FooterView if (luRecyclerViewAdapter.getInnerAdapter().getItemCount() < pageSize) { return; } LoadingFooter footerView; //已经有footerView了 if (luRecyclerViewAdapter.getFooterViewsCount() > 0) { footerView = (LoadingFooter) luRecyclerViewAdapter.getFooterView(); footerView.setState(state); footerView.setVisibility(View.VISIBLE); if (state == LoadingFooter.State.NetWorkError) { footerView.setOnClickListener(errorListener); } } recyclerView.scrollToPosition(luRecyclerViewAdapter.getItemCount() - 1); } /** * 获取当前RecyclerView.FooterView的状态 * * @param recyclerView */ public static LoadingFooter.State getFooterViewState(RecyclerView recyclerView) { RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter != null && outerAdapter instanceof LuRecyclerViewAdapter) { if (((LuRecyclerViewAdapter) outerAdapter).getFooterViewsCount() > 0) { LoadingFooter footerView = (LoadingFooter) ((LuRecyclerViewAdapter) outerAdapter).getFooterView(); return footerView.getState(); } } return LoadingFooter.State.Normal; } /** * 设置当前RecyclerView.FooterView的状态 * * @param recyclerView * @param state */ public static void setFooterViewState(RecyclerView recyclerView, LoadingFooter.State state) { RecyclerView.Adapter outerAdapter = recyclerView.getAdapter(); if (outerAdapter != null && outerAdapter instanceof LuRecyclerViewAdapter) { if (((LuRecyclerViewAdapter) outerAdapter).getFooterViewsCount() > 0) { LoadingFooter footerView = (LoadingFooter) ((LuRecyclerViewAdapter) outerAdapter).getFooterView(); footerView.setState(state); } } } }