BRVAH2.x升级3.x注意
helper.setGone(id, isGone) isGone参数含义与2.x相反 ,true为不可见,false为可见
使用setList 替换原来setNewData方法,分页加载,第一页使用setList,第二页使用addData
原来使用BaseMultiItemQuickAdapter做可以展开的多级列表,现在统一换成BaseNodeAdapter+BaseNodeProvider+BaseNode方式
RecyclerView外层嵌套NestedScrollView会导致动画失效以及view复用失效,所以如非必要,不要使用NestedScrollView嵌套RecyclerView,可以使用header或者 CoordinatorLayout嵌套
需要自动加载更多功能,adapter需要实现LoadMoreModule接口
adapter数据加载,构造Adapter的时候传递数据源,以后都只使用这一个数据源,使用setList和addData不会更新数据源,并会自动更新数据源,无需额外的集合操作
分页加载代码
mCircleItemAdapter.getLoadMoreModule().setOnLoadMoreListener(new com.chad.library.adapter.base.listener.OnLoadMoreListener() {
@Override
public void onLoadMore() {
page++;
getDataBatch();
}
});
mCircleItemAdapter.getLoadMoreModule().setAutoLoadMore(true);
//当自动加载开启,同时数据不满一屏时,是否继续执行自动加载更多(默认为true)
mCircleItemAdapter.getLoadMoreModule().setEnableLoadMoreIfNotFullPage(false);
smart_refresh.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
// 这里的作用是防止下拉刷新的时候还可以上拉加载
mCircleItemAdapter.getLoadMoreModule().setEnableLoadMore(false);
page = 1;
getDataBatch();
}
});
if (pageInfo.isFirstPage()) {
//如果是加载的第一页数据,用 setData()
mAdapter.setList(data);
} else {
//不是第一页,则用add
mAdapter.addData(data);
}
if (data.size() < PAGE_SIZE) {
//如果不够一页,显示没有更多数据布局
mAdapter.getLoadMoreModule().loadMoreEnd();
Tips.show("no more data");
} else {
mAdapter.getLoadMoreModule().loadMoreComplete();
}
网友评论