Recyclerview的使用(三):SwipeRefreshLayout实现下拉刷新

时间:2021-7-21 作者:qvyue

前言

SwipeRefreshLayout是Google推出的可以实现下拉刷新的控件。

Recyclerview的使用其他的文章:
RecyclerView的使用(二):添加头部和尾部
RecyclerView的使用(一):基本使用

一、包引入

首先需要在build.gradle模块中引入此包

    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'

二、方法说明

SwipeRefreshLayout常用的方法包括如下几项:

方法 说明
setColorSchemeColors 设置下拉进度条的颜色
setProgressBackgroundColorSchemeColor 设置下拉进度条背景颜色
setRefreshing 设置刷新状态
isRefreshing 获取刷新状态,boolean
setOnRefreshListener 设置下拉操作监听

三、Demo实现

下面我们实现一个简单的demo来进行说明,当我点击按钮去添加了列表item,使用下拉刷新更新列表,效果如图:

Recyclerview的使用(三):SwipeRefreshLayout实现下拉刷新
下拉刷新Demo.gif

首先我们来看xml布局实现,直接使用SwipeRefreshLayout将Recyclerview包裹起来,设置一个用来添加item的按钮,如下:



    

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演示。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。