前言
SwipeRefreshLayout是Google推出的可以实现下拉刷新的控件。
Recyclerview的使用其他的文章:
RecyclerView的使用(二):添加头部和尾部
RecyclerView的使用(一):基本使用
一、包引入
首先需要在build.gradle模块中引入此包
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
二、方法说明
SwipeRefreshLayout常用的方法包括如下几项:
方法 | 说明 |
---|---|
setColorSchemeColors | 设置下拉进度条的颜色 |
setProgressBackgroundColorSchemeColor | 设置下拉进度条背景颜色 |
setRefreshing | 设置刷新状态 |
isRefreshing | 获取刷新状态,boolean |
setOnRefreshListener | 设置下拉操作监听 |
三、Demo实现
下面我们实现一个简单的demo来进行说明,当我点击按钮去添加了列表item,使用下拉刷新更新列表,效果如图:
下拉刷新Demo.gif首先我们来看xml布局实现,直接使用SwipeRefreshLayout将Recyclerview包裹起来,设置一个用来添加item的按钮,如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".pullrefreash.PullRefreshActivity">
<Button
android:text="添加数据"
android:id="@+id/btn_add_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/page_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
demo里Recyclerview的实现比较简单,在此就不再赘述了,本片文章着重于说明下拉刷新控件,需要学习的朋友请查看我之前的Recyclerview的基本使用文章。
按照上述表格中的常用方法一一设置,完成对下拉刷新控件的设置,直接上代码:
private fun initRecyclerView() {
listData.add(TestData("测试1", "测试数据1"))
listData.add(TestData("测试2", "测试数据2"))
listData.add(TestData("测试3", "测试数据3"))
listAdapter = TestAdapter(listData)
listView.adapter = listAdapter
listView.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL))
listView.layoutManager = LinearLayoutManager(this)
//设置进度条颜色
refreshLayout.setColorSchemeColors(resources.getColor(R.color.black))
//设置进度条背景颜色
refreshLayout.setProgressBackgroundColorSchemeColor(resources.getColor(R.color.teal_200))
//设置下拉动作监听
refreshLayout.setOnRefreshListener {
//刷新数据
listAdapter.notifyDataSetChanged()
Handler(Looper.getMainLooper()).postDelayed({
//更新刷新状态
refreshLayout.isRefreshing = false
}, 2000)
}
}
在下拉动作监听中,首先在下拉刷新动作产生之后执行列表刷新代码,然后在刷新完成后更新刷新状态为完成的状态(上述代码中为了简单起见,直接使用了固定的2s延迟更新进度条状态)。
总结
利用SwipeRefreshLayout实现Recyclerview的简易下拉刷新,Demo演示。
网友评论