ARecyclerView,一个库搞定recyclerview

来源:互联网 发布:linux打印行号 编辑:程序博客网 时间:2024/06/08 06:16

ARecyclerView

对RecyclerView的封装,功能强大、使用简单、扩展性强。该库主要分成三部分:RecyclerAdapterXRecyclerViewXRecyclerContentLayout

该库在商业项目中历经一年多时间打磨,欢迎star、fork,后期会有更多分享,期待您的建议和关注。

  • ARecyclerView
    • 使用
    • RecyclerAdapter
      • 使用示例
    • XRecyclerView
      • 使用示例
    • XRecyclerContentLayout
      • 使用示例
      • 自定义LoadMoreView的实现
      • 自定义实现XRecyclerContentLayout

ARecyclerView

使用

  • 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);                   //设置AdapterrecyclerView.horizontalDivider(R.color.x_red, R.dimen.divider_height);  //设置dividerrecyclerView.setOnRefreshAndLoadMoreListener(new XRecyclerView.OnRefreshAndLoadMoreListener() { //设置刷新和上拉加载监听            @Override            public void onRefresh() {                loadData(1);            }            @Override            public void onLoadMore(int page) {                loadData(page);            }        });recyclerView.useDefLoadMoreView();      //使用默认的上拉刷新样式recyclerView.addHeaderView(headView);       //添加headerrecyclerView.addFooterView(footview);       //添加footerrecyclerView.removeHeaderView(headview);    //删除headerrecyclerView.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。

1 0