ARecyclerView
對RecyclerView的封裝,功能強大、使用簡單、擴充性強。該庫主要分成三部分:RecyclerAdapter、XRecyclerView、XRecyclerContentLayout
該庫在商業項目中曆經一年多時間打磨,歡迎star、fork,後期會有更多分享,期待您的建議和關注。
- ARecyclerView
- 使用
- RecyclerAdapter
- 使用示例
- XRecyclerView
- 使用示例
- XRecyclerContentLayout
- 使用示例
- 自定義LoadMoreView的實作
- 自定義實作XRecyclerContentLayout
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiMwcjN0gDNwEzNxETM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
使用
- 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。