这里是利用系统的 SwipeRefreshLayout,RecyclerView ,加上开源库 BaseRecyclerViewAdapterHelper 组合而成的一个View ,可控制是否刷新,加载,不用每次都去写一个 SwipeRefreshLayout 嵌套 RecyclerView 。
使用 RecyclerView 和 BaseRecyclerViewAdapterHelper 版本如下:
implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
效果图是比较简单的:
来看一下实现代码:
private fun initView() {
// 模拟页面初始化数据请求,
onRefresh()
// mList.addAll(getList())
initAdapter()
// 初始化相关配置
activity_swipe_refresh.initOptions(object : SwipeRefreshView.ConfigOptions {
override fun configAdapter(): BaseQuickAdapter<*, BaseViewHolder> {
/**
* 初始化 Adapter ,此处可以在 return 之前对 Adapter 进行一系列的需求配置。 比如 setEmptyView 等等~
*
* getAdapter() 得到的是此处设置的 adapter
*/
return mAdapter
}
override fun layoutManager(): RecyclerView.LayoutManager = LinearLayoutManager(this@SwipeRefreshActivity)
override fun configRecyclerView(recyclerView: RecyclerView) {
/**
* 这里可进行一些你想要的 RecyclerView 设置, 此方法为非必选
*
* 不想实现此方法,也可通过 activity_swipe_refresh.getRecyclerView() 来获取 RecyclerView
*/
super.configRecyclerView(recyclerView)
}
override fun configSwipeRefreshLayout(refreshLayout: SwipeRefreshLayout) {
/**
* 这里可进行一些你想要的 SwipeRefreshLayout 相关设置,比如刷新的颜色,背景色
*
* 此方法为非必选
*
* 不想实现此方法,也可通过 activity_swipe_refresh.getSwipeRefreshLayout() 来获取 SwipeRefreshLayout
*/
super.configSwipeRefreshLayout(refreshLayout)
}
override fun setEnableLoadMore(): Boolean {
/**
* 是否可加载更多 该方法非必须,默认 false
* 等同于 setEnableRefresh(boolean)
*/
return super.