viewWapper的步骤

2017-07-18  本文已影响5人  小白猿

HS2.0中有上下拉刷新的RecyclerView的ViewWrapper的写法,并且基于DataBinding包含异常处理

继承

RecyclerView 部分

下拉刷新

boolean isHaveDatas(){}         
void loadSuccess(){}                  
void loadFailure(){}            
void autoRefresh(){}            
void stopRefresh(){}            
void setEnableRefresh(boolean enable){}
void hideLoadMore(){}           

上拉刷新

改造viewWrapper

 private void initFooter(Context context) {
        mFooterView = new LoadFooterView(context);
        mRefreshAdapter.addFootView(mFooterView);
        mFooterView.gone();
    }
private RecyclerView.OnScrollListener mLoadMoreListener = new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
            int totalItemCount = layoutManager.getItemCount();
            int lastVisibleItem = layoutManager.findLastVisibleItemPosition();

            if (mOnScrollListener != null && !isLoading && totalItemCount < (lastVisibleItem + Constant.VISIBLE_THRESHOLD)) {
                isLoading = true;
                showLoadMore();
                mOnScrollListener.onScroll();
            }
        }
    };
    /**
     * 初始化加载更多
     */
    private void initFooter(Context context) {
        mFooterView = new LoadFooterView(context);
        mRefreshAdapter.addFootView(mFooterView);
        mFooterView.gone();
    }

    /**
     * 显示加载更多
     */
    void showLoadMore() {
        if (mFooterView != null) {
            mFooterView.setState(STATE_NORMAL);
            mFooterView.visible();
        }
    }

    /**
     * 隐藏加载更多
     */
    void hideLoadMore() {
        if (mFooterView != null) {
            mFooterView.setState(STATE_NORMAL);
            mFooterView.gone();
        }
    }

    /**
     *  没有更多数据
     */
    void noMore() {
        if (mFooterView != null) {
            mFooterView.setState(STATE_NO_MORE);
            mFooterView.visible();
        }
    }

改造P层

改造Activity

    /**
     * 滚动事件
     */
    public interface OnScrollListener {
        /**
         * 上拉刷新
         */
        void onScroll();

        /**
         * 下拉刷新
         */
        void onRefresh();
    }

异常处理

目前分为两种:进页面前已经断网,进页面以后上拉的时候断网

<FrameLayout
     android:id="@id/fl_exception_layout"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_below="@+id/rl_tool_bar_layout" 
/>

在Activity重写createExceptionLayoutId方法来引入异常的布局

上一篇 下一篇

猜你喜欢

热点阅读