天天看點

ARecyclerView,一個庫搞定recyclerviewARecyclerView

ARecyclerView

對RecyclerView的封裝,功能強大、使用簡單、擴充性強。該庫主要分成三部分:RecyclerAdapter、XRecyclerView、XRecyclerContentLayout

該庫在商業項目中曆經一年多時間打磨,歡迎star、fork,後期會有更多分享,期待您的建議和關注。
  • ARecyclerView
    • 使用
    • RecyclerAdapter
      • 使用示例
    • XRecyclerView
      • 使用示例
    • XRecyclerContentLayout
      • 使用示例
      • 自定義LoadMoreView的實作
      • 自定義實作XRecyclerContentLayout
ARecyclerView,一個庫搞定recyclerviewARecyclerView

使用

  • Gradle : compile ‘cn.droidlover:XRecyclerView:1.0.0’
  • Github : ARecyclerView

RecyclerAdapter

RecyclerAdapter簡化了Adapter的開發,封裝了一些常用的邏輯,包括資料集合操作、接口監聽RecyclerItemCallback可以滿足99%的需求。

使用示例

public class TestRecAdapter extends RecyclerAdapter<TestRecAdapter.Item, TestRecAdapter.ViewHolder> {

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

    }
}
           

XRecyclerView

XRecyclerView是對RecyclerView的封裝,其主要特性包括:

  • 一行代碼添加、删除、修改Header或者Footer
  • 一行代碼添加預設的上拉加載效果
  • 一行代碼切換自定義上拉加載效果
  • 一行代碼輕松添加LayoutManager
  • 一行代碼添加divider
  • Adapter規範及封裝RecyclerAdapter

使用示例

recyclerView.verticalLayoutManager(this)        //設定layoutManager
            .setAdapter(adapter);                   //設定Adapter
recyclerView.horizontalDivider(R.color.x_red, R.dimen.divider_height);  //設定divider
recyclerView.setOnRefreshAndLoadMoreListener(new XRecyclerView.OnRefreshAndLoadMoreListener() { //設定重新整理和上拉加載監聽
            @Override
            public void onRefresh() {
                loadData();
            }

            @Override
            public void onLoadMore(int page) {
                loadData(page);
            }
        });
recyclerView.useDefLoadMoreView();      //使用預設的上拉重新整理樣式
recyclerView.addHeaderView(headView);       //添加header
recyclerView.addFooterView(footview);       //添加footer
recyclerView.removeHeaderView(headview);    //删除header
recyclerView.removeFooterView(footview);    //删除footer
           

XRecyclerContentLayout

XRecyclerContentLayout繼承了QTContentLayout,可自定義Loading、Error、Empty、Content四種顯示狀态,滿足了絕大部分需求.

使用示例

<cn.droidlover.xrecyclerview.XRecyclerContentLayout
        android:id="@+id/contentLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:recyclerBackgroundColor="#f5f5f5"
        app:recyclerScrollbarNone="true"
        app:recyclerScrollbarStyle="outsideOverlay" />
           
contentLayout.loadingView(new LoadingView(this));
             .errorView(new ErrorView(this));
             .emptyView(new EmptyView(this));

contentLayout.showLoading();
contentLayout.showError();
contentLayout.showEmpty();
contentLayout.showContent();
           

自定義LoadMoreView的實作

自定義LoaderMoreView隻需實作LoadMoreUIHandler接口,然後調用xrecyclerView的loadMoreFooterView(loadMoreView)方法即可。

@Override
    public void onLoading() {
        setVisibility(VISIBLE);
        tvMsg.setText("加載中");
        progressBar.setVisibility(VISIBLE);
    }

    @Override
    public void onLoadFinish(boolean hasMore) {
        if (hasMore) {
            setVisibility(GONE);
        } else {
            setVisibility(VISIBLE);
            tvMsg.setText("沒有更多資料");
            progressBar.setVisibility(GONE);
        }
    }
           

設定loadMoreView

recyclerView.loadMoreFooterView(loadMoreView);
           

自定義實作XRecyclerContentLayout

在XRecyclerContentLayout中内置了SwipeRefreshLayout下拉重新整理樣式,您也可以自定義實作XRecyclerContentLayout,隻需實作XRecyclerView.StateCallback接口即可.

public interface StateCallback {
        void notifyEmpty();     //資料為空

        void notifyContent();   //顯示contentview

        void refreshState(boolean isRefresh);   //更新重新整理狀态

        void refreshEnabled(boolean isEnabled); //重新整理是否可用
    }
           

詳情demo可見app module。