“Swipe down/Pull down to refresh” is a widely used feature in various kinds of apps. Let’s see how can we do that via SwipeRefreshLayout in AndroidX.
Dependencies
1
   | implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
   | 
 
Layout
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   | <?xml version="1.0" encoding="utf-8"?> <androidx.swiperefreshlayout.widget.SwipeRefreshLayout 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:id="@+id/mySwipeRefreshLayout"     android:layout_width="match_parent"     android:layout_height="match_parent"     tools:context=".ui.main.DevicesFragment">
 
      <androidx.recyclerview.widget.RecyclerView         android:id="@+id/myRecyclerView"         android:layout_width="match_parent"         android:layout_height="match_parent"
          app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toTopOf="parent" />
  </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
   | 
 
Here we have a RecyclerView inside SwipeRefreshLayout. We plan to update dataset in RecyclerView when user swipe down.
Java
To implement the logic of refreshing, we need to set refresh listener and override method onRefresh:
1 2 3 4 5 6 7 8 9 10
   | mSwipeRefreshLayout = getView().findViewById(R.id.mySwipeRefreshLayout); mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {     @Override     public void onRefresh() {                            mSwipeRefreshLayout.setRefreshing(false);     } });
   | 
 
When refreshing is done, call setRefreshing(false) to stop refreshing animation.