SuperRecyclerView用法

关于SuperRecyclerView的用法

1. 简介:

  • SuperRecyclerView是支持addHeaderView、addFooterView、下拉刷新、分页加载数据的RecyclerView。
  • 它对RecyclerView控件进行了拓展,给RecyclerView增加HeaderView、FooterView,并且不需要对你的Adapter做任何修改。

2. 主要功能

  1. 下拉刷新、滑动到底部自动加载下页数据;
  2. 可以方便添加Header和Footer;
  3. 头部下拉样式可以自定义;
  4. 具备item点击和长按事件。
  5. 网络错误加载加载失败点击Footer重新请求数据;
  6. 可以动态为FooterView赋予不同状态(加载中、加载失败、滑到最底等)。

3. 使用

  1. 添加HeaderView、FooterView
1
2
3
4
5
6
7
8
9
10
11
12
mDataAdapter = new DataAdapter(this);
mDataAdapter.setData(dataList);

mHeaderAndFooterRecyclerViewAdapter = new HeaderAndFooterRecyclerViewAdapter(this, mDataAdapter);
mRecyclerView.setAdapter(mHeaderAndFooterRecyclerViewAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

//add a HeaderView
RecyclerViewUtils.setHeaderView(mRecyclerView, new SampleHeader(this));

//add a FooterView
RecyclerViewUtils.setFooterView(mRecyclerView, new SampleFooter(this));
  1. 添加滚动监听事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mRecyclerView.addOnScrolListener(mOnScrollListener);

RecyclerOnScrollListener mOnScrollListener = new RecyclerOnScrollListener(){

@Override
public void onBottom(){

LoadingFooter.State state = RecyclerViewUtils.getFooterViewState(mRecyclerView);
if(state == LoadingFooter.State.Loading){
Log.d(TAG, "the state is Loading, just wait...");
return;
}

if(mCurrentCounter < TOTAL_COUNTER){
//loading more
RecyclerViewStateUtils.setFooterViewState(EndlessLinearLayoutActivity.this, mRecyclerView, REQUEST_COUNT, LoadingFooter.State.Loading, null);
requestData();
}else{
//the end
RecyclerViewStateUtils.setFooterViewState(EndlessLinearLayoutActivity.this, mRecyclerView, REQUEST_COUNT, LoadingFooter.State.TheEnd, null);
}
}
};
**RecyclerOnScrollListener**实现了**onScrollUp()、onScrollDown()、onBottom()、onScrolled()**四个事件,如下所示:
1
2
3
4
5
6
7
8
//scroll down to up
public abstrsct void onScrollUp();
//scroll from up to down
public abstrsct void onScrollDown();
//load next page
publid abstrsct void onBottom();
//moving state,you can get the move distance
public abstrsct void onScrolled(int distanceX, int distenceY);
- **onScrollUp()**——RecyclerView向上滑动的监听事件; - **onScrollDown()**——RecyclerView向下滑动的监听事件; - **onBottom()**——RecyclerView滑动到底部的监听事件; - **onBottom()**——RecyclerView正在滚动的监听事件;
  1. 加载更多(加载下页数据)
- 从上面的RecyclerOnScrollListener类的介绍中就可以看出,实现加载更多只要在**onBottom()**接口中处理即可。

未完待续……