@Override
        public void handleMessage(Message msg) {
          super.handleMessage(msg);

          switch (msg.what) {
            case WHAT_DISPATCH_NOTIFY_REFRESH:
              Object[] argsRefresh = (Object[]) msg.obj;
              RecyclerFooterAdapterWrapper wrapperRefresh =
                  (RecyclerFooterAdapterWrapper) argsRefresh[0];
              List<WeakReference<SwipeRefreshLayout.OnRefreshListener>> listenersRefresh =
                  (List<WeakReference<SwipeRefreshLayout.OnRefreshListener>>) argsRefresh[1];

              wrapperRefresh.setLoadmoreEnabled(false);
              for (WeakReference<SwipeRefreshLayout.OnRefreshListener> weak : listenersRefresh) {
                SwipeRefreshLayout.OnRefreshListener listener = weak.get();
                if (listener != null) {
                  onNotify(listener);
                }
              }
              break;

            case WHAT_DISPATCH_NOTIFY_LOADMORE:
              Object[] argsLoadmore = (Object[]) msg.obj;
              RecyclerFooterAdapterWrapper wrapperLoadmore =
                  (RecyclerFooterAdapterWrapper) argsLoadmore[0];
              List<WeakReference<OnLoadmoreListener>> listenersLoadmore =
                  (List<WeakReference<OnLoadmoreListener>>) argsLoadmore[1];
              if (!wrapperLoadmore.isLoadingmoreEnabled() || wrapperLoadmore.isLoadingmoreing()) {
                return;
              }

              // TODO 此处需要禁用下拉功能

              wrapperLoadmore.setLoadmoreing(true);
              for (WeakReference<OnLoadmoreListener> weak : listenersLoadmore) {
                OnLoadmoreListener listener = weak.get();
                if (listener != null) {
                  onNotify(listener);
                }
              }
              break;

            case WHAT_ON_REFRESH:
            case WHAT_ON_LOADMORE:
              Object listener = msg.obj;
              if (listener != null) {
                if (listener instanceof SwipeRefreshLayout.OnRefreshListener) {
                  ((SwipeRefreshLayout.OnRefreshListener) listener).onRefresh();
                } else if (listener instanceof OnLoadmoreListener) {
                  ((OnLoadmoreListener) listener).onLoadmore();
                }
              }
              break;
          }
        }
  /**
   * 检查是否需要执行Loadmore
   *
   * @param recycler RecyclerView
   * @param listener 加载更多监听
   */
  private static void checkLoadmore(RecyclerView recycler, OnLoadmoreListener listener) {
    RecyclerView.LayoutManager layoutManager = recycler.getLayoutManager();
    if (layoutManager instanceof LinearLayoutManager) {
      int lastVisibleItem = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition();

      int totalItemCount = recycler.getAdapter().getItemCount();
      if (lastVisibleItem >= totalItemCount - 1) {
        listener.onLoadmore();
      }
    } else if (layoutManager instanceof StaggeredGridLayoutManager) {
      StaggeredGridLayoutManager gridLayoutManager = (StaggeredGridLayoutManager) layoutManager;
      int last[] = new int[gridLayoutManager.getSpanCount()];
      gridLayoutManager.findLastVisibleItemPositions(last);

      int totalItemCount = recycler.getAdapter().getItemCount();
      for (int i = 0; i < last.length; i++) {
        int lastVisibleItem = last[i];
        if (lastVisibleItem >= totalItemCount - 1) {
          listener.onLoadmore();
          break;
        }
      }
    }
  }