引入依赖:
//上拉刷新下拉加载:
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
布局xml文件
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srlEnableRefresh="true">
<-刷新的头部->
<com.scwang.smartrefresh.layout.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.hjq.widget.layout.HintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/credit_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="50dp" />
</com.hjq.widget.layout.HintLayout>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
1597368732(1).png
在activity中
//定义的bean
private var listbean: ArrayList<Bean>? = null
//adapter
lateinit var adapter: MyAdapter
//分页 从1开始
var pageNow = 1
//是否有数据可继续上拉加载
var isEnd = false
//上拉下拉刷新事件
refreshLayout_credit.setOnRefreshListener { refreshlayout ->
refreshlayout.finishRefresh(2000/*,false*/)//传入false表示刷新失败
pageNow = 1
isEnd = false
listbean!!.clear()
adapter.notifyDataSetChanged()
initData()//请求数据的方法
}
refreshLayout_credit.setOnLoadMoreListener { refreshlayout ->
refreshlayout.finishLoadMore(2000/*,false*/)//传入false表示加载失败
if (isEnd) {
ToastUtils.showShort("无更多数据!")
refreshLayout_credit.finishRefresh()//停止刷新
} else {
initData()//请求数据的方法
}
}
/**
* 请求列表
*/
private fun initData() {
showLoading()//加载中的弹窗
//请求方法都不一样,我只发一下请求成功之后的解析吧
//我这里解析用的阿里的fastjson:
// implementation 'com.alibaba:fastjson:1.1.71.android'
//括号第一个是返回的数据,第二个是封装的bean
var list = JSON.parseArray(apiResult.data,Bean::class.java)
//如果数据小于每页的数量 不在加载更多
if (list.size >= 10) { //分页的数量 如果后台返回的list长度大于10,分页就+1
pageNow++
} else {
isEnd = true
}
listbean!!.addAll(list)
adapter.setNewData(listbean)//adapter设置数据
adapter.notifyDataSetChanged()//刷新adapter
refreshLayout_credit.finishRefresh() //结束刷新
showComplete() //结束加载
}
else -> {
showComplete()//结束加载
//页面如果为1,显示空数据布局,否则弹出toast
if (pageNow == 1) {
//数据为空的提示布局
showEmpty()
} else {
toast("后台返回的错误信息")
}
}
Adapter
//万能适配器 implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.47'
class MyAdapter(layoutResId: Int, data: List<Bean?>?) :
BaseQuickAdapter<Bean, BaseViewHolder>(layoutResId, data) {
override fun convert(helper: BaseViewHolder, item: Bean) {
//这里就不多说了,就一个设置数据的adapter而已
helper.setText(R.id.item, item.mark)
.setText(R.id.tv_number, item.score)
}
}
网友评论