美文网首页
Recyclerview的使用(三):SwipeRefreshL

Recyclerview的使用(三):SwipeRefreshL

作者: 静水红阳 | 来源:发表于2021-07-01 10:38 被阅读0次

    前言

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

    相关文章

      网友评论

          本文标题:Recyclerview的使用(三):SwipeRefreshL

          本文链接:https://www.haomeiwen.com/subject/ywljultx.html