package com.ly.supermvp.delegate; import android.content.Context; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.RecyclerView; import android.view.View; import com.github.clans.fab.FloatingActionButton; import com.github.clans.fab.FloatingActionMenu; import com.jakewharton.rxbinding.support.v4.widget.RxSwipeRefreshLayout; import com.ly.supermvp.R; import com.ly.supermvp.common.Constants; import com.ly.supermvp.mvp_frame.view.AppDelegate; import com.ly.supermvp.view.LoadingView; import com.ly.supermvp.widget.ProgressLayout; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import rx.functions.Action1; /** * <Pre> * recycleview通用视图代理 * </Pre> * * @author 刘阳 * @version 1.0 * <p/> * Create by 2016/3/23 13:53 * @see https://github.com/liuyanggithub/SuperMvp */ public abstract class BaseRecyclerViewDelegate extends AppDelegate implements LoadingView{ @Bind(R.id.progress_layout) ProgressLayout progress_layout;//进度条布局(通用,可实现错误按钮,点击重试) @Bind(R.id.swipe_refresh_layout) SwipeRefreshLayout swipe_refresh_layout;//下拉刷新控件 @Bind(R.id.recyclerview) RecyclerView recyclerview; //悬浮菜单 @Bind(R.id.floating_action_menu) FloatingActionMenu floating_action_menu; @Bind(R.id.floating_action_button1) FloatingActionButton floating_action_button1; @Bind(R.id.floating_action_button2) FloatingActionButton floating_action_button2; @Bind(R.id.floating_action_button3) FloatingActionButton floating_action_button3; @Bind(R.id.floating_action_button4) FloatingActionButton floating_action_button4; protected List<FloatingActionButton> mFloatingActionButtons;//悬浮菜单选项数组 /** * 初始化recyclerview,必须重写 */ abstract void initRecyclerView(); /** * 设置悬浮菜单是否显示,必须重写 */ abstract boolean setFloatingActionMenuVisible(); @Override public int getRootLayoutId() { return R.layout.layout_base_recyclerview; } @Override public void initWidget() { super.initWidget(); initSwipeRefreshLayout(); initRecyclerView(); initFloatingActionMenu(); } /** * 初始化悬浮菜单 */ private void initFloatingActionMenu() { floating_action_menu.setVisibility(setFloatingActionMenuVisible() ? View.VISIBLE : View.GONE); floating_action_menu.setClosedOnTouchOutside(true); mFloatingActionButtons = new ArrayList<>(); mFloatingActionButtons.add(floating_action_button1); mFloatingActionButtons.add(floating_action_button2); mFloatingActionButtons.add(floating_action_button3); mFloatingActionButtons.add(floating_action_button4); } /** * 初始化下拉刷新控件 */ private void initSwipeRefreshLayout() { swipe_refresh_layout.setColorSchemeResources(Constants.colors);//设置下拉刷新控件变换的四个颜色 } /** * 设置是否隐藏悬浮菜单选项卡 * @param animate 是否动画 */ public void hideMenu(boolean animate){ floating_action_menu.close(animate); } /** * 设置下拉刷新接口 * * @param callBack 下拉刷新的回调接口 */ public void registerSwipeRefreshCallBack(final SwipeRefreshAndLoadMoreCallBack callBack) { RxSwipeRefreshLayout.refreshes(swipe_refresh_layout).subscribe(new Action1<Void>() { @Override public void call(Void aVoid) { // 2016/2/29 调用fragment的方法加载数据,需要解耦(已用接口解决) callBack.refresh(); } }); } public void setListAdapter(RecyclerView.Adapter adapter) { recyclerview.setAdapter(adapter); } @Override public void showLoading() { progress_layout.showLoading(); } @Override public void showContent() { RxSwipeRefreshLayout.refreshing(swipe_refresh_layout).call(false); if (!progress_layout.isContent()) { progress_layout.showContent(); } } @Override public void showError(int messageId, View.OnClickListener listener) { RxSwipeRefreshLayout.refreshing(swipe_refresh_layout).call(false); if (!progress_layout.isError()) { progress_layout.showError(messageId, listener); } } @Override public Context getContext() { return null; } }